在 Go 中取消引用地图索引
在 Go 程序中,不能直接引用地图索引。此问题的出现是由于映射的动态特性,其中条目的地址可能会在映射增长或收缩期间发生变化。因此,尝试在映射条目上调用指针接收器方法会导致以下错误:
cannot call pointer method on f[0] cannot take the address of f[0]
要解决此问题,只需从有问题的方法中的方法接收器中删除星号 (*):
func (c Cashier) Buy(itemNum int){ item, pass := c.items[itemNum] if pass{ if item.amount == 1{ delete(c.items, itemNum) } else{ item.amount-- c.items[itemNum] = item } c.cash++ } }
通过这样做,该方法不再是指针接收器,允许在映射条目上调用它而不会出现问题。
以上是为什么我不能在 Go 中的映射条目上使用指针接收器?的详细内容。更多信息请关注PHP中文网其他相关文章!