golang傳值和傳引用

1.定義:

b = a;

b.modify();

如果b的修改不會改變a的值,那麼是傳值;否則,是傳引用

2.golang中大多數是傳值的,有:
基本類型:byte,int,bool,string
複合類型:數組,數組切片,結構體,map,channnel
3.數組:

3.1 傳值

func main() {
	var array = [3]int{0, 1, 2}
	var array2 = array
	slice2[2] = 5
	fmt.Println(array, array2)
}
輸出結果:
[0 1 2] [0 1 5]

3.2.傳引用的使用方法:

func main() {
	var array = [3]int{0, 1, 2}
	var array2 = &array
	array2[2] = 5
	fmt.Println(array, *array2)
}
輸出結果:
[0 1 5] [0 1 5]
4.數組切片看這篇博文:

http://blog.csdn.net/cyk2396/article/details/78893420

5.struct結構體:

在函數中參數的傳遞可以是傳值(對象的複製,需要開闢新的空間來存儲該新對象)和傳引用(指針的複製,和原來的指針指向同一個對象),建議使用指針,原因有兩個:能夠改變參數的值,避免大對象的複製操作節省內存。struct和數組的用法類似

6.map看這篇博文:

http://blog.csdn.net/cyk2396/article/details/78890185

7.channel:

channel和數組切片,map一樣,傳參的方式是傳值,都可以直接使用,其內部維護着指向真正存儲空間的指針。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章