使用该结构的内部函数检查映射中是否存在值
Check if a value exists in map using an internal function from that struct
我有这个结构
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 {
我收到这个错误:
Assignment count mismatch: 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))
}
}
我有这个结构
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 {
我收到这个错误:
Assignment count mismatch: 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))
}
}