您好,登錄后才能下訂單哦!
今天小編給大家分享一下Go值類型和引用類型是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
所有像 int、float、bool 和 string 這些基本類型都屬于值類型,使用這些類型的變量直接指向存在內(nèi)存中的值:
當(dāng)使用等號 =
將一個(gè)變量的值賦值給另一個(gè)變量時(shí),如:j = i
,實(shí)際上是在內(nèi)存中將 i 的值進(jìn)行了拷貝:
你可以通過 &i 來獲取變量 i 的內(nèi)存地址,例如:0xf840000040(每次的地址都可能不一樣)。
值類型變量的值存儲(chǔ)在堆中。
內(nèi)存地址會(huì)根據(jù)機(jī)器的不同而有所不同,甚至相同的程序在不同的機(jī)器上執(zhí)行后也會(huì)有不同的內(nèi)存地址。因?yàn)槊颗_(tái)機(jī)器可能有不同的存儲(chǔ)器布局,并且位置分配也可能不同。
更復(fù)雜的數(shù)據(jù)通常會(huì)需要使用多個(gè)字,這些數(shù)據(jù)一般使用引用類型保存。
一個(gè)引用類型的變量 r1 存儲(chǔ)的是 r1 的值所在的內(nèi)存地址(數(shù)字),或內(nèi)存地址中第一個(gè)字所在的位置。
這個(gè)內(nèi)存地址稱之為指針,這個(gè)指針實(shí)際上也被存在另外的某一個(gè)值中。
同一個(gè)引用類型的指針指向的多個(gè)字可以是在連續(xù)的內(nèi)存地址中(內(nèi)存布局是連續(xù)的),這也是計(jì)算效率最高的一種存儲(chǔ)形式;也可以將這些字分散存放在內(nèi)存中,每個(gè)字都指示了下一個(gè)字所在的內(nèi)存地址。
當(dāng)使用賦值語句 r2 = r1 時(shí),只有引用(地址)被復(fù)制。
如果 r1 的值被改變了,那么這個(gè)值的所有引用都會(huì)指向被修改后的內(nèi)容,在這個(gè)例子中,r2 也會(huì)受到影響。
以上就是“Go值類型和引用類型是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。