《零基础Go语言算法实战》
【题目 2-5】函数参数的值传递和引用传递
下面代码的输出是什么?
package main
import "fmt"
type Test struct {
array []int
str string
}
func asign(t Test) {
t.array[0] = 88
t.str = "Go is good"
}
func main() {
var t = Test{
array: []int{66, 6, 88},
str: "I Love Go",
}
asign(t)
fmt.Println(t.array[0])
fmt.Println(t.str)
}
【解答】
88
I Love Go
原因:调用 asign()函数时,虽然是传值,但在asign()函数中,字段array是切片,为引用传递;
str 是字符串,为值传递。