最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang方法中receiver為指針與不為指針的區(qū)別詳析

 更新時(shí)間:2017年10月18日 11:15:55   作者:pinecone  
這篇文章主要給大家介紹了關(guān)于golang方法中receiver為指針與不為指針區(qū)別的相關(guān)資料,其實(shí)最大的區(qū)別應(yīng)該是指針傳遞的是對(duì)像的引用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

golang的指針receiver和非指針receiver的區(qū)別?最近在看網(wǎng)站有同學(xué)提問(wèn)golang中方法的receiver為指針和不為指針有什么區(qū)別,在這里我以簡(jiǎn)單易懂的方法進(jìn)行說(shuō)明,幫助剛剛學(xué)習(xí)golang的同學(xué),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

方法是什么

其實(shí)只要明白這個(gè)原理,基本就能理解上面提到的問(wèn)題.

方法其實(shí)就是一種特殊的函數(shù),receiver就是隱式傳入的第一實(shí)參.

舉個(gè)例子

type test struct{
 name string
}

func (t test) TestValue() {
}

func (t *test) TestPointer() {
}

func main(){
 t := test{}
 
 m := test.TestValue
 m(t)
 
 m1 := (*test).TestPointer
 m1(&t) 
}

是不是很簡(jiǎn)單就明白了呢?現(xiàn)在我們來(lái)加入代碼,來(lái)看看指針和非指針有什么區(qū)別.

type test struct{
 name string
}

func (t test) TestValue() {
 fmt.Printf("%p\n", &t)
}

func (t *test) TestPointer() {
 fmt.Printf("%p\n", t)
}

func main(){
 t := test{}
 //0xc42000e2c0
 fmt.Printf("%p\n", &t)
 
 //0xc42000e2e0
 m := test.TestValue
 m(t)
 
 //0xc42000e2c0
 m1 := (*test).TestPointer
 m1(&t) 

}

估計(jì)有的同學(xué)已經(jīng)明白了,當(dāng)不是指針時(shí)傳入實(shí)參后值發(fā)生了復(fù)制.所以每調(diào)用一次TestValue()值就發(fā)生一次復(fù)制.

那如果涉及到修改值的操作,結(jié)果會(huì)是怎樣呢?

type test struct{
 name string
}

func (t test) TestValue() {
 fmt.Printf("%s\n",t.name)
}

func (t *test) TestPointer() {
 fmt.Printf("%s\n",t.name)
}

func main(){
 t := test{"wang"}

 //這里發(fā)生了復(fù)制,不受后面修改的影響
 m := t.TestValue
 
 t.name = "Li"
 m1 := (*test).TestPointer
 //Li
 m1(&t) 
 
 //wang
 m()
}

所以各位同學(xué)在編程遇到此類問(wèn)題一定要注意了.

那這些方法集之間到底是什么關(guān)系呢?這里借用了qyuhen在golang讀書筆記的話,這里也推薦喜歡golang的朋友去閱讀這本書,對(duì)加深理解golang有很大的幫助.

       • 類型 T 法集包含全部 receiver T 法。

       • 類型 T 法集包含全部 receiver T + T 法。

       • 如類型 S 包含匿名字段 T,則 S 法集包含 T 法。

       • 如類型 S 包含匿名字段 T,則 S 法集包含 T + T 法。

       • 不管嵌 T 或 T,S 法集總是包含 T + *T 法。

結(jié)語(yǔ)

golang雖然上手簡(jiǎn)單易用,但是還是有很多坑.作者在使用golang過(guò)程中就遇到很多坑,以后會(huì)慢慢提出,歡迎大家一起討論.

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • golang之log rotate詳解

    golang之log rotate詳解

    下面小編就為大家?guī)?lái)一篇golang之log rotate詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Go 微服務(wù)開發(fā)框架DMicro設(shè)計(jì)思路詳解

    Go 微服務(wù)開發(fā)框架DMicro設(shè)計(jì)思路詳解

    這篇文章主要為大家介紹了Go 微服務(wù)開發(fā)框架DMicro設(shè)計(jì)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • go mock server的簡(jiǎn)易實(shí)現(xiàn)示例

    go mock server的簡(jiǎn)易實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了go mock server的簡(jiǎn)易實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 深入淺出Go語(yǔ)言:手把手教你高效生成與解析JSON數(shù)據(jù)

    深入淺出Go語(yǔ)言:手把手教你高效生成與解析JSON數(shù)據(jù)

    本文將帶你一步步走進(jìn)Go語(yǔ)言的世界,教你如何高效生成與解析JSON數(shù)據(jù),無(wú)論你是初學(xué)者還是經(jīng)驗(yàn)豐富的開發(fā)者,都能在本文中找到實(shí)用的技巧和靈感,本文內(nèi)容簡(jiǎn)潔明了,示例豐富,讓你在閱讀的過(guò)程中輕松掌握Go語(yǔ)言生成與解析JSON數(shù)據(jù)的技巧,需要的朋友可以參考下
    2024-02-02
  • Golang設(shè)計(jì)模式之責(zé)任鏈模式講解和代碼示例

    Golang設(shè)計(jì)模式之責(zé)任鏈模式講解和代碼示例

    責(zé)任鏈?zhǔn)且环N行為設(shè)計(jì)模式, 允許你將請(qǐng)求沿著處理者鏈進(jìn)行發(fā)送, 直至其中一個(gè)處理者對(duì)其進(jìn)行處理,本文就詳細(xì)給大家介紹一下Golang 責(zé)任鏈模式,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-06-06
  • GO語(yǔ)言基礎(chǔ)庫(kù)os包的函數(shù)全面解析

    GO語(yǔ)言基礎(chǔ)庫(kù)os包的函數(shù)全面解析

    這篇文章主要為大家介紹了GO語(yǔ)言基礎(chǔ)庫(kù)os包的函數(shù)全面解析, 有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語(yǔ)言--切片(Slice)詳解

    Go語(yǔ)言--切片(Slice)詳解

    這篇文章主要介紹了Go語(yǔ)言--切片(Slice),Go 語(yǔ)言切片是對(duì)數(shù)組的抽象,下面文章小編將為大家詳細(xì)介紹該內(nèi)容,需要的朋友可以參考下,希望對(duì)你有所幫助
    2021-10-10
  • go語(yǔ)言題解LeetCode1299將每個(gè)元素替換為右側(cè)最大元素

    go語(yǔ)言題解LeetCode1299將每個(gè)元素替換為右側(cè)最大元素

    這篇文章主要為大家介紹了go語(yǔ)言LeetCode刷題1299將每個(gè)元素替換為右側(cè)最大元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Golang pipe在不同場(chǎng)景下遠(yuǎn)程交互

    Golang pipe在不同場(chǎng)景下遠(yuǎn)程交互

    這篇文章主要介紹了Golang pipe在不同場(chǎng)景下遠(yuǎn)程交互,pipe實(shí)現(xiàn)從一個(gè)進(jìn)程重定向至另一個(gè)進(jìn)程,它是雙向數(shù)據(jù)通道,用于實(shí)現(xiàn)進(jìn)行間通信
    2023-03-03
  • Go語(yǔ)言調(diào)用ffmpeg-api實(shí)現(xiàn)音頻重采樣

    Go語(yǔ)言調(diào)用ffmpeg-api實(shí)現(xiàn)音頻重采樣

    最近對(duì)golang處理音視頻很感興趣,對(duì)golang音視頻常用庫(kù)goav進(jìn)行了一番研究。自己寫了一個(gè)wav轉(zhuǎn)采樣率的功能。給大家分享一下,中間遇到了不少坑,解決的過(guò)程中還是蠻有意思的,希望大家能喜歡
    2022-12-12

最新評(píng)論

太保市| 左权县| 仁寿县| 兰州市| 鄂伦春自治旗| 仁布县| 甘泉县| 上饶县| 陆丰市| 于都县| 三门县| 丹江口市| 阆中市| 宝鸡市| 团风县| 兴和县| 独山县| 苗栗市| 阳新县| 那曲县| 江门市| 大厂| 高密市| 托克逊县| 普定县| 龙里县| 东乌珠穆沁旗| 鄂尔多斯市| 嘉峪关市| 杭锦旗| 佛冈县| 玉树县| 历史| 尼玛县| 高密市| 灵丘县| 陵川县| 郧西县| 新沂市| 平武县| 绥江县|