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的值傳遞和引用傳遞
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.