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修改成指针形式
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修改成指针形式
相关文章推荐
- 8.笔记go语言——复杂类型struct,slice,map
- go-map的并发问题
- mapstruct在eclipse生成不了mapper的实现类的问题
- 关于mapstruct转换list的问题
- Go基础系列:struct的导出和暴露问题
- go map并发写错误问题
- go和python变量赋值遇到的一个问题
- HashMap赋值的问题【注意Map不能用=赋值】
- Go 语言中struct, slice , map 比较
- go 数组(array)、切片(slice)、map、结构体(struct)
- 详解Go开发Struct转换成map两种方式比较
- 关于struct 变量初始化和赋值的问题(vs 环境)
- STRUCT以及VECTOR的赋值问题
- go语言函数传递问题(map、切片、接口、chan)
- 阅读go项目源码,解决无法快速找到interface有哪些struct实现问题
- go语言映射map的线程协程安全问题
- Go 1.9 以后 map 并发读写的问题,sync.Map 揭秘
- Go-struct嵌套初始化与赋值
- Mapstruct使用问题Couldn't retrieve @Mapper annotation
- Go_14:GoLang中 json、map、struct 之间的相互转化