使用该结构的内部函数检查映射中是否存在值



我有这个结构

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。

有很多链接建议我们可以检查带有该行的映射中是否存在值,我不知道发生了什么。我做错了什么?

提前谢谢。

类型*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))
}
}

相关内容

  • 没有找到相关文章

最新更新