本文介绍了golang 中如何给map中的struct 赋值,急急急!!!!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
求大神指教
package main
import (
"fmt"
)
type User struct {
name string
age int
}
func main() {
test := map[int]User{1: User{"zhang", 10}, 2: User{"li", 9}}
test[1].name = "zhao"
fmt.Println(test)
/*
这种方式也行,但是我要用协程,数据要共享,so,不能用以下方式
tmp := test[1]
tmp.name = "zhao"
test[1] = tmp
fmt.Println(test)
*/
}
会报错
./test3.go:16: cannot assign to test[1].name
解决方案
tmp := test[1]
tmp.name = "zhao"
test[1] = tmp
这种用法在goroutine 中使用时在map 上加上锁也没有问题吧
test := map[int]*User{1: &User{"zhang", 10}, 2: &User{"li", 9}}
test[1].name = "zhao"
用指针的话应该更好一点吧,不过也存在data race,需要加锁
这篇关于golang 中如何给map中的struct 赋值,急急急!!!!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!