为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
烙印99 2023-05-15 15:13:16
我有这个结构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))

    }

}


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信