func f()(string,error){ return "test scope of variable",nil } func main() { var name string if name,err := f();nil ==err{ println(name) } println(name) fmt.Println("Hello,世界") }
上面的例子输出:
test scope of variable
=============(空行)
Hello,世界
期望是:
test scope of variable
test scope of variable
Hello,世界
原因分析:
golang一旦遇到:=这个符号,如果在不同一个作用域中,就会新定义个变量,如果在同一个作用域中,情况如下例所示:只定义没有定义过的变量:
package main import "fmt" func f()(str string){ ok,str := f2() if ok{ return } return "f()" } func f2()(b bool,str string){ return true,"f2()" } func main() { str := f() fmt.Println(str) }输出:f2()
原文地址:https://www.jb51.cc/go/191372.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。