第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang 接口映射 - 恐慌:分配給 nil 映射中的條目

golang 接口映射 - 恐慌:分配給 nil 映射中的條目

Go
偶然的你 2021-11-08 16:04:38
我是 golang 的新手,我正在嘗試創(chuàng)建類型為 map[string]interface{} 的地圖。但是當我嘗試創(chuàng)建一個不存在的新鍵時,我收到一個運行時錯誤“panic: assignment to entry in nil map”。誰能告訴我我做錯了什么?去游樂場:https : //play.golang.org/p/vIEE0T11yl這是我的代碼:package mainfunc main() {    buffer := Buffer{}    buffer.AddRecord("myKey", 12345)}type Buffer struct {    records    map[string][]interface{}}// ProcessRecord adds a message to the buffer.func (buffer *Buffer) AddRecord(key string, record interface{}) {    _, ok := buffer.records[key]    if !ok {        buffer.records[key] = make([]interface{}, 0)    }    buffer.records[key] = append(buffer.records[key], record)}
查看完整描述

1 回答

?
慕村9548890

TA貢獻1884條經(jīng)驗 獲得超4個贊

您需要初始化地圖本身:https : //play.golang.org/p/wl4mmGjmRP


func (buffer *Buffer) AddRecord(key string, record interface{}) {

    // Check for nil, else initialise the map

    if buffer.records == nil {

        buffer.records = make(map[string][]interface{})

    }

    _, ok := buffer.records[key]

    if !ok {

        buffer.records[key] = make([]interface{}, 0)

    }


    buffer.records[key] = append(buffer.records[key], record)

}

您還可以為您的結構類型使用構造函數(shù) - 例如NewBuffer(...) *Buffer- 也可以初始化該字段,但在使用它之前檢查 nil 是一種很好的做法。訪問地圖鍵也是如此。


查看完整回答
反對 回復 2021-11-08
  • 1 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號