golang變數作用域問題
阿新 • • 發佈:2019-01-06
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()