struct结构体不能赋值变通方案

在处理map中结构体元索变更时会出错,代码与错误如下:

package main

import "fmt"

type Animal struct {
    count int
}

func main() {
    m := map[string]Animal{"cat": Animal{2}, "dog": Animal{3}, "mouse": Animal{5}}
        fmt.Println(m)
    m["dog"].count = 4
    
    fmt.Println(m)

}

错误如下:

main.go:12: cannot assign to struct field m["dog"].count in map

指针存储会解决上述问题,代码如下:

package main

import "fmt"

type Animal struct {
    count int
}

func main() {
    m := map[string]*Animal{"cat": &Animal{2}, "dog": &Animal{3}, "mouse": &Animal{5}}
    fmt.Printf("%#v\n",m["dog"])
    m["dog"].count = 4
    fmt.Printf("%#v", m["dog"])
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容