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 mainimport "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() 总结
以上是内存溢出为你收集整理的golang变量作用域问题全部内容,希望文章能够帮你解决golang变量作用域问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)