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 9 小时 56 分钟前
加个*号
|
3
iseki 33 分钟前 via Android
> A Map must not be copied after first use.
|