濟(jì)南網(wǎng)站建設(shè)優(yōu)化站長(zhǎng)申論
一、值類型和引用類型示例:
? ? ? ? 值類型:基本數(shù)據(jù)類型系列,如:int,float,bool,string,數(shù)組和結(jié)構(gòu)體等。
? ? ? ? 引用類型:如:指針,slice切片,map,管道chan,interface等。
二、一般程序的內(nèi)存分布情況:?
三、值類型和引用類型的使用:
? ? ? ? 1、值類型:變量直接存儲(chǔ)值,內(nèi)存通常在棧中分配。
? ? ? ? 2、引用類型:變量存儲(chǔ)的是一個(gè)地址,這個(gè)地址對(duì)應(yīng)的空間才是真正的存儲(chǔ)數(shù)據(jù),內(nèi)存通常在堆上分配,當(dāng)沒有任何變量引用這個(gè)地址時(shí),該地址對(duì)應(yīng)的數(shù)據(jù)空間就成了一個(gè)垃圾,由GC來回收。
? ? ? ? 3、內(nèi)存的棧區(qū)和堆區(qū):
golang默認(rèn)都是采用值傳遞,即拷貝傳遞,也就是深拷貝;而引用傳遞則是淺拷貝。只有一些特定的類型,如:slice,map,channel,function,pointer這些天生就是引用類型,是通過引用傳遞的。
四、值傳遞和引用傳遞:
? ? ? ? 1、值傳遞:值傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份傳遞到函數(shù)中,這樣在函數(shù)中如果對(duì)參數(shù)進(jìn)行修改,將不會(huì)影響到實(shí)際參數(shù)。
? ? ? ? 2、引用傳遞:引用傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)的地址傳遞到函數(shù)中,這樣在函數(shù)中如果對(duì)參數(shù)進(jìn)行修改,將會(huì)影響到實(shí)際參數(shù)。