美文网首页
struct结构体不能赋值变通方案

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

作者: 渣渣曦 | 来源:发表于2020-02-09 16:56 被阅读0次

    在处理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"])
    }
    

    相关文章

      网友评论

          本文标题:struct结构体不能赋值变通方案

          本文链接:https://www.haomeiwen.com/subject/tsknxhtx.html