新手问题 [基础问题] 数组赋值

codinghxl · 2017年11月15日 · 最后由 koala 回复于 2017年11月15日 · 65 次阅读
type Data struct{
    AABB [2]float64
}

var m map[string]Data = make(map[string]Data,1)

m["xxx"] = Data{}

m["xxx"].AABB[0]=1.0
m["xxx"].AABB[1]=2.0


如果上代码 go build 通不过,错误提示

cannot assign to m["xxx"].AABB[0]

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

因为 map 因扩张⽽而重新哈希时,各键值项存储位置都会发⽣生改变,所以你直接通过指针更改其中一个值的属性是不行的

type Data struct{
    AABB [2]float64
}

m := make(map[string]*Data,1)
m["xxxx"] = &Data{}
m["xxxx"].AABB[0] = 1.0 
m["xxxx"].AABB[1] = 2.0 

这样写就对了你的 m["xxxx"] 返回的是值不是一个可取地址的变量
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册