s := [3]int{1, 2, 4}
func(v [3]int) {
v[0] = 0
}(s)
fmt.Println(s) //参数固定长度数组是值传递 输出1 2 4
func(v []int) {
v[0] = 0
}(s[:])
fmt.Println(s) //参数非固定长度是切片是引用传递 输出0 2 4
m := map[int]int{
1: 10,
2: 20,
3: 30,
}
func(v map[int]int) {
v[3] = 40
}(m)
fmt.Println(m) //map是引用传递 输出[1:10 2:20 3:40]
//另外channel也是引用传递
//-----------------------
type Test struct {
a int
}
t := Test{a: 1}
func(v Test) {
v.a = 5
}(t)
fmt.Println(t) //对象是值传递 输出{1}
//其他值传递的还有string 和各种基本类型
golang的值传递和引用传递
最新推荐文章于 2024-06-02 19:12:55 发布