我有這個結(jié)構(gòu)type Zones map[uint64]Zone我想有一種方法可以在該地圖中找到一個值,就像這樣。func (z *Zones) findById(id uint64) (Zone, error) { if zone, ok := z[id]; ok { return zone, nil } else { return zone{}, errors.New(fmt.Sprintf("Zone %d not found", id)) }}但是在這一行中:if zone, ok := z[id]; ok {我收到此錯誤:分配計數(shù)不匹配:2=1。有很多鏈接表明我們可以使用該行檢查地圖中是否存在值,我不知道發(fā)生了什么。我究竟做錯了什么?提前致謝。
1 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個贊
該類型*Zone不支持索引。這是指針,不是地圖。取消引用指針以修復(fù)代碼:
func (z *Zones) findById(id uint64) (Zone, error) {
if zone, ok := (*z)[id]; ok { // <-- note change on this line
return zone, nil
} else {
return Zone{}, errors.New(fmt.Sprintf("Zone %d not found", id))
}
}
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報
0/150
提交
取消