【发布时间】:2016-04-29 21:05:53
【问题描述】:
我对 Go 很陌生,我已经多次偶然发现以下问题。我不明白在:= 的帮助下允许(或不允许)重新定义一个变量的基本规则是什么。
您能否向我解释一下为什么test := func3() 在第一个脚本中会触发错误,但在第二个脚本中却可以正常工作?
两个脚本之间唯一不同的是调用func3()的行的位置。
谢谢!
第一个脚本
https://play.golang.org/p/vvCI7nxHZL
package main
import (
"fmt"
)
func func1() (string, string) {
return "", ""
}
func func2() (string, string) {
return "", ""
}
func func3() string {
return ""
}
func main() {
test, test2 := func1()
test, test3 := func2()
test := func3()
fmt.Println(test, test2, test3)
}
第二个脚本
https://play.golang.org/p/BTTYCGEJ4E
package main
import (
"fmt"
)
func func1() (string, string) {
return "", ""
}
func func2() (string, string) {
return "", ""
}
func func3() string {
return ""
}
func main() {
test := func3()
test, test2 := func1()
test, test3 := func2()
fmt.Println(test, test2, test3)
}
【问题讨论】:
标签: go