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

Golang Map value不可尋址使用指針類型代替示例詳解

 更新時(shí)間:2023年11月01日 14:40:40   作者:Peanut  
這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Golang Map元素取址

package main
import "fmt"
type UserInfo struct {
    Uid      string `json:"uid"`
    UserName string `json:"user_name"`
    Sex      int    `json:"sex"`
}
func main() {
    var user = make(map[string]UserInfo)
    uid := "0001"
    user[uid] = UserInfo{
        Uid:      uid,
        UserName: "jack",
        Sex:      1,
    }
    user[uid].UserName="polly"
    fmt.Println(user[uid])
}

以上代碼報(bào)錯(cuò):./map.go:19:20: cannot assign to struct field user[uid].UserName in map

原因是 map 元素是無法取址的,也就說可以得到 user[uid].UserName, 但是無法對其進(jìn)行修改。

解決辦法 使用指針的map

golang里面的map,當(dāng)通過key獲取到value時(shí),這個(gè)value是不可尋址的,因?yàn)閙ap 會(huì)進(jìn)行動(dòng)態(tài)擴(kuò)容,當(dāng)進(jìn)行擴(kuò)展后,map的value就會(huì)進(jìn)行內(nèi)存遷移,其地址發(fā)生變化,所以無法對這個(gè)value進(jìn)行尋址。也就是造成上述問題的原因所在。map的擴(kuò)容與slice不同,那么map本身是引用類型,作為形參或返回參數(shù)的時(shí)候,傳遞的是值的拷貝,而值是地址,擴(kuò)容時(shí)也不會(huì)改變這個(gè)地址。而slice的擴(kuò)容,會(huì)導(dǎo)致地址的變化。

package main
import "fmt"
type UserInfo struct {
    Uid      string `json:"uid"`
    UserName string `json:"user_name"`
    Sex      int    `json:"sex"`
}
func main() {
    var user = make(map[string]*UserInfo)
    uid := "0001"
    user[uid] = &UserInfo{
        Uid:      uid,
        UserName: "jack",
        Sex:      1,
    }
    user[uid].UserName="polly"
    fmt.Println(user[uid])
}

以上就是Golang Map value不可尋址使用指針類型代替示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Golang Map value尋址替代的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    這篇文章主要為大家介紹了Go語言處理超大字符串型整數(shù)加減經(jīng)典面試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Goland 關(guān)閉自動(dòng)移除未使用的包操作

    Goland 關(guān)閉自動(dòng)移除未使用的包操作

    這篇文章主要介紹了Goland 關(guān)閉自動(dòng)移除未使用的包操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go包管理的具體實(shí)現(xiàn)

    go包管理的具體實(shí)現(xiàn)

    本文主要介紹了go包管理的具體實(shí)現(xiàn),包括包定義、自定義包路徑、init函數(shù)作用、導(dǎo)入方式及Go Modules配置,感興趣的可以了解一下
    2025-06-06
  • Beego AutoRouter工作原理解析

    Beego AutoRouter工作原理解析

    這篇文章主要為大家介紹了Beego AutoRouter工作原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • go語言里包的用法實(shí)例

    go語言里包的用法實(shí)例

    這篇文章主要介紹了go語言里包的用法,實(shí)例分析了Go語言里包的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang?select?機(jī)制和超時(shí)問題

    golang?select?機(jī)制和超時(shí)問題

    golang 中的協(xié)程使用非常方便,但是協(xié)程什么時(shí)候結(jié)束是一個(gè)控制問題,可以用 select 配合使用,這篇文章主要介紹了golang?select?機(jī)制和超時(shí)問題,需要的朋友可以參考下
    2022-06-06
  • Go使用pprof進(jìn)行CPU,內(nèi)存和阻塞情況分析

    Go使用pprof進(jìn)行CPU,內(nèi)存和阻塞情況分析

    Go 語言提供了強(qiáng)大的 pprof工具,用于分析 CPU、內(nèi)存、Goroutine 阻塞等性能問題,幫助開發(fā)者優(yōu)化程序,提高運(yùn)行效率,下面我們就來深入了解下pprof 的使用吧
    2025-03-03
  • 詳解Go語言的錯(cuò)誤處理和資源管理

    詳解Go語言的錯(cuò)誤處理和資源管理

    資源處理是什么?打開文件需要關(guān)閉,打開數(shù)據(jù)庫連接,連接需要釋放。這些成對出現(xiàn)的就是資源管理。有時(shí)候我們雖然釋放了,但是程序在中間出錯(cuò)了,那么可能導(dǎo)致資源釋放失敗。如何保證打開的文件一定會(huì)被關(guān)閉呢?這就是資源管理與錯(cuò)誤處理考慮的一個(gè)原因
    2021-06-06
  • 使用go讀取gzip格式的壓縮包的操作

    使用go讀取gzip格式的壓縮包的操作

    這篇文章主要介紹了使用go讀取gzip格式的壓縮包的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang cron 定時(shí)器和定時(shí)任務(wù)的使用場景

    Golang cron 定時(shí)器和定時(shí)任務(wù)的使用場景

    Ticker是一個(gè)周期觸發(fā)定時(shí)的計(jì)時(shí)器,它會(huì)按照一個(gè)時(shí)間間隔往channel發(fā)送系統(tǒng)當(dāng)前時(shí)間,而channel的接收者可以以固定的時(shí)間間隔從channel中讀取事件,這篇文章主要介紹了Golang cron 定時(shí)器和定時(shí)任務(wù),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

沧源| 荃湾区| 泾川县| 海门市| 宾川县| 龙门县| 出国| 桃源县| 英吉沙县| 麟游县| 绩溪县| 梅河口市| 惠东县| 壤塘县| 桐庐县| 水富县| 昌乐县| 德阳市| 筠连县| 梅州市| 大余县| 洞头县| 辽阳市| 庆阳市| 灵台县| 新郑市| 沧州市| 光山县| 家居| 岳西县| 渭源县| 兰溪市| 西和县| 浦县| 峨山| 安丘市| 南川市| 武强县| 临海市| 孟津县| 天等县|