package main import ( "fmt" syncmap "golang.org/x/sync/syncmap" ) type Mark struct{ Values syncmap.Map } var chanA chan int = make(chan int , 1) func (m Mark)funa(){ go func(){ m.Values.Store("a",1) chanA<-1 }() <-chanA } func main() { var mk = new (Mark) mk.Values.Store("a",0) mk.funa() va, p := mk.Values.Load("a") fmt.Printf("%v:%v\n",va,p) }
没有这行 mk.Values.Store("a",0) 永远取不到值 va 等于 nil p 等于 false
1 zhouyin OP 需要把函数 funa 定义成指针接收者 就不需要初始化 ```golang func (m *Mark)funa(){ go func(){ m.Values.Store("a",1) chanA<-1 }() <-chanA } ``` 道理上想不通 值接收者如果设计到变量拷贝 那么在函数里赋值也没用 |
2 buffzty 1 小时 48 分钟前 加个*号 |