package main
import "fmt"
func main() {
a, b, c := myfunc02()
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
func myfunc02() (a,b,c int) {
//fmt.Println(a,b,c)
a,b,c := 10,20,30
return a,b,c
}

返回值命名
Go 允许在定义函数时,命名返回值,当然这些变量可以在函数中使用。在 return 语句中,无需显示的返回这些值,Go 会自动将其返回。当然 return 语句还是必须要写的,否则编译器会报错。
在函数中定义的返回值变量,会自动赋为 zero-value 。也就是说变量会自动进行初始化 int 类型初始化为 0,string 初始化为 "" , 结构体则根据其组成部分初始化。
解决方法
package main
import "fmt"
func main() {
a, b, c := myfunc02()
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
func myfunc02() (int,int,int) {
//fmt.Println(a,b,c)
a,b,c := 10,20,30
return a,b,c
}

或者把返回值得命名和变量名称命名不一样就可以解决这个问题了.
package main
import "fmt"
func main() {
a, b, c := myfunc02()
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
func myfunc02() (d,e,f int) {
//fmt.Println(a,b,c)
a, b, c = 111, 222, 333
return a,b,c
}
也能使用赋值操作也不会出现这个问题
package main
import "fmt"
func main() {
a, b, c := myfunc02()
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}
func myfunc02() (a,b,c int) {
//fmt.Println(a,b,c)
a, b, c = 111, 222, 333
return
}
本文探讨了Go语言中函数返回值的命名规则及初始化特性。通过示例代码展示了如何在函数定义时命名返回值,并说明了这些值在函数体内会自动初始化为零值。此外,还提供了几种避免命名冲突的方法,包括改变返回值名称和直接赋值。

5755

被折叠的 条评论
为什么被折叠?



