我有这个结构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 {我收到此错误:分配计数不匹配:2=1。有很多链接表明我们可以使用该行检查地图中是否存在值,我不知道发生了什么。我究竟做错了什么?提前致谢。
1 回答
UYOU
TA贡献1878条经验 获得超4个赞
该类型*Zone不支持索引。这是指针,不是地图。取消引用指针以修复代码:
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 关注
- 100 浏览
添加回答
举报
0/150
提交
取消