欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

詳解go中的引用類型

值類型和引用類型

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比洞頭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式洞頭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋洞頭地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

值類型:int、float、bool和string這些類型都屬于值類型,使用這些類型的變量直接指向存在內(nèi)存中的值,值類型的變量的值存儲(chǔ)在棧中。當(dāng)使用等號(hào)=將一個(gè)變量的值賦給另一個(gè)變量時(shí),如 j = i ,實(shí)際上是在內(nèi)存中將 i 的值進(jìn)行了拷貝??梢酝ㄟ^ &i 獲取變量 i 的內(nèi)存地址。  值拷貝

引用類型:特指slice、map、channel這三種預(yù)定義類型。引用類型擁有更復(fù)雜的存儲(chǔ)結(jié)構(gòu):(1)分配內(nèi)存 (2)初始化一系列屬性等一個(gè)引用類型的變量r1存儲(chǔ)的是r1的值所在的內(nèi)存地址(數(shù)字),或內(nèi)存地址中第一個(gè)字所在的位置,這個(gè)內(nèi)存地址被稱之為指針,這個(gè)指針實(shí)際上也被存在另外的某一個(gè)字中。 

兩者的主要區(qū)別:拷貝操作和函數(shù)傳參。

正文開始重點(diǎn)給大家介紹go中的引用類型。

首先,go中的賦值,都是值傳遞

a := 1
b := a

x := Struct{}
y := x

他們都是在內(nèi)存中有獨(dú)立空間的,也就是 copy 的過程,所以這里對(duì)y的某個(gè)屬性的改動(dòng),并不會(huì)影響x

那么我們要讓兩個(gè)變量指向同一個(gè)內(nèi)存怎么辦呢,可以使用引用類型:

y := &x

這時(shí)候,y的類型是 *Struct ,這時(shí)候我們可以對(duì)y進(jìn)行修改,修改完之后,x也會(huì)發(fā)現(xiàn)變化,因?yàn)閥現(xiàn)在是一個(gè)引用類型,他指向的是x結(jié)構(gòu)體所在的內(nèi)存

我們可以通過:

y.variable = xxx

來直接調(diào)用引用類型的結(jié)構(gòu)體賦值,但是要注意的是,這是go的語法糖,他只是幫助我們簡化了通過指針來獲取實(shí)際內(nèi)存的過程,完整的寫法應(yīng)該是這樣的:

(*y).variable = xxx

*y 是對(duì)指針的反引用,可以理解為 *y == x 。

為什么設(shè)計(jì)這個(gè)語法糖呢,是因?yàn)樵趃o里面我們是無法直接操作指針,像c++中直接對(duì)內(nèi)存地址進(jìn)行計(jì)算進(jìn)而得到其他內(nèi)存地址的運(yùn)算,在go里面是默認(rèn)不支持的

print(y) // 得到類似0x8123這樣的內(nèi)存地址數(shù)據(jù)

// 理論上可以得到一個(gè)新的內(nèi)存地址,但是在go里默認(rèn)是不支持的
newAddr := y + 4

因?yàn)闊o法直接操作地址,所以go就提供語法糖,讓我們?cè)谑褂靡妙愋瓦M(jìn)行操作的時(shí)候,默認(rèn)就是對(duì)引用所指向的內(nèi)存地址進(jìn)行操作。

注意我們是可以對(duì)引用類型直接賦值的,但是賦值的類型也必須是引用類型

y = &Struct{} // 這樣是可以的,但是不能是y = Struct{}

a := 1
b := &a
b = 2  // 這是不行的,因?yàn)閎的類型是 *int

特殊的引用類型

能夠通過 make() 函數(shù)創(chuàng)建的都是引用類型,比如 slice 和 map , slice 雖然看起來像數(shù)組,但是他其實(shí)是一個(gè)指向數(shù)組內(nèi)存空間的一個(gè)指針類型

type Slice struct {
 point Point // 內(nèi)存地址
 len int
 cap int
}

所以我們?cè)趫?zhí)行:

a := []int
b = a

會(huì)發(fā)現(xiàn),好像b和a指向的是同一個(gè)數(shù)組,事實(shí)確實(shí)如此。 go中所有的賦值都是值傳遞,而slice的賦值,也是對(duì)slice對(duì)象的一次拷貝,也就是說a和b是不同的slice對(duì)象,但是他們指向同一個(gè)數(shù)組

同理map也是如此,就不多講來。

總結(jié)

到此這篇關(guān)于詳解go中的引用類型的文章就介紹到這了,更多相關(guān)go中的引用類型內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

網(wǎng)站標(biāo)題:詳解go中的引用類型
新聞來源:http://www.aaarwkj.com/article18/gppcdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
激情亚洲综合一区二区| 午夜影院在线观看网站| 日本午夜福利久久久| 青青草原高清在线观看| 美女爽到高潮久久久| 欧美日韩国产在线91| 欧美日韩精品综合国产| 亚洲av成人在线观看| 后入式动漫在线观看| 国产丝袜美女一区二区| 日韩精品人妻一区二区三区免费| 国产一区在线视频无卡顿| 色偷偷91综合久久噜噜| 国产精品色呦呦一区二区| 欧美日韩激情在线不卡三区| 91麻豆精品国产自产| 中文字幕在线精品乱码| 日本高清一区二区不卡视频| 白白色手机视频免费看| 欧美视频免费一级黄片| 精品少妇高潮蜜臀av| 天堂免费av在线播放| 国产我和子的乱视频亲生| 亚洲午夜精品美女写真| 少妇高潮特黄在线观看| 亚洲人妻激情一区二区| 午夜日韩综合激情视频在线观看| 亚洲激情欧美激情在线| 久久精品亚洲欧美麻豆| 国产女主播高清在线视频| 欧美日韩69av网| 久久久这里只有精品99| 女人高潮被爽到呻吟在线| 亚洲黄色片大奶子水多| 天堂在线精品亚洲综合网| 久久精品国产亚洲av麻豆网站 | 日本亚洲精品在线观看| 放荡精品少妇一区二区三区| 国产av剧情极品丝袜美女| av剧情网址在线观看| av在线播放网址网站|