您的位置:首页 > 编程语言 > Go语言

go的map中struct赋值问题

2018-02-23 12:12 543 查看
首先看下例子如下(可直接执行):package main
import(
    "fmt"
)
type SS struct {
    Name string
}
func main() { ss := SS{
        Name: "struct",
    }
ms := make(map[int]SS)
    ms[1] = ss
    sp := &SS{
        Name: "pointer",
    }
    fmt.Printf("sp:---%p\r\n", sp)
    mp := make(map[int]*SS)
    mp[1] = sp
    //修改 struct 类型的,会报错
    //ms[1].Name = "new struct name"

  mp[1].Name = "new struct name"
    fmt.Printf("ss:%+v\n", ss)
    fmt.Printf("sp:%+v\n", sp)
    fmt.Printf("sp:---%p\r\n", mp[1])
}

解答:有一点很重要:map中的元素不是变量,因此不能寻址!!所以如果要修改map中的struct的成员变量的值,需要将struct修改成指针形式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: