亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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, 但是無法對(duì)其進(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ā)生變化,所以無法對(duì)這個(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尋址替代的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你理解Go語(yǔ)言中方法的本質(zhì)

    一文帶你理解Go語(yǔ)言中方法的本質(zhì)

    我們知道,Go語(yǔ)言從設(shè)計(jì)伊始,就不支持經(jīng)典的面向?qū)ο笳Z(yǔ)法元素,但?Go?語(yǔ)言仍保留了名為“方法(method)”的語(yǔ)法元素,下面我們就來帶大家深入了解一下Go語(yǔ)言中的方法吧
    2023-11-11
  • go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)

    go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)

    本文主要介紹了go語(yǔ)言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子

    go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子

    今天小編就為大家分享一篇go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • GoLang string與strings.Builder使用對(duì)比詳解

    GoLang string與strings.Builder使用對(duì)比詳解

    這篇文章主要介紹了GoLang string與strings.Builder使用對(duì)比,Builder 用于使用 Write 方法有效地構(gòu)建字符串。它最大限度地減少了內(nèi)存復(fù)制。零值可以使用了。不要復(fù)制非零生成器
    2023-03-03
  • 試了下Golang實(shí)現(xiàn)try catch的方法

    試了下Golang實(shí)現(xiàn)try catch的方法

    雖然在使用Golang的時(shí)候發(fā)現(xiàn)沒有try catch這種錯(cuò)誤處理機(jī)制但是想一想golang作為一門優(yōu)雅的語(yǔ)言,似乎也是情理之中。那么夠怎么捕獲異常呢,本文就來介紹一下
    2021-07-07
  • golang常用庫(kù)之字段參數(shù)驗(yàn)證庫(kù)-validator使用詳解

    golang常用庫(kù)之字段參數(shù)驗(yàn)證庫(kù)-validator使用詳解

    這篇文章主要介紹了golang常用庫(kù):字段參數(shù)驗(yàn)證庫(kù)-validator使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Go語(yǔ)言Gin處理響應(yīng)方式詳解

    Go語(yǔ)言Gin處理響應(yīng)方式詳解

    gin框架封裝了常用的數(shù)據(jù)格式方法響應(yīng)于客戶端,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言Gin處理響應(yīng)方式的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 一文掌握Golang模糊測(cè)試

    一文掌握Golang模糊測(cè)試

    本文主要介紹了一文掌握Golang模糊測(cè)試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 使用Go語(yǔ)言封裝實(shí)現(xiàn)郵件發(fā)送功能

    使用Go語(yǔ)言封裝實(shí)現(xiàn)郵件發(fā)送功能

    在現(xiàn)代 Web 開發(fā)中,郵件發(fā)送功能是一個(gè)常見的需求,本文將介紹如何在 Go 語(yǔ)言中封裝一個(gè)通用的郵件發(fā)送包,支持驗(yàn)證碼發(fā)送和通用郵件發(fā)送,需要的可以參考下
    2025-03-03
  • Golang實(shí)現(xiàn)gRPC的Proxy的原理解析

    Golang實(shí)現(xiàn)gRPC的Proxy的原理解析

    gRPC是Google開始的一個(gè)RPC服務(wù)框架, 是英文全名為Google Remote Procedure Call的簡(jiǎn)稱,廣泛的應(yīng)用在有RPC場(chǎng)景的業(yè)務(wù)系統(tǒng)中,這篇文章主要介紹了Golang實(shí)現(xiàn)gRPC的Proxy的原理,需要的朋友可以參考下
    2021-09-09

最新評(píng)論