golang的值傳遞和引用傳遞

2021-09-22 18:32:56 字數 484 閱讀 9264

s := [3]int

func(v [3]int) (s)

fmt.println(s) //引數固定長度陣列是值傳遞 輸出1 2 4

func(v int) (s[:])

fmt.println(s) //引數非固定長度是切片是引用傳遞 輸出0 2 4

m := map[int]int

func(v map[int]int) (m)

fmt.println(m) //map是引用傳遞 輸出[1:10 2:20 3:40]

//另外channel也是引用傳遞

//-----------------------

type test struct

t := test

func(v test) (t)

fmt.println(t) //物件是值傳遞 輸出

//其他值傳遞的還有string 和各種基本型別

golang函式的值傳遞和引用傳遞

python對於字串和數字作為引數傳遞時,在函式中的值就是直接複製了乙個。就像下面這個例子,a和b的位址是同乙個但是改變a的值,b的值不會發生改變。a 1b 1print a a,id a b b,id b a 2print a a,id a b b,id b 輸出結果 a 194378359581...

值傳遞和引用傳遞

幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...

值傳遞和引用傳遞

1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...