最近,我学会了-race检查go中比赛条件是否存在的选项。完整的命令是go run -race xxx.go它确实对我有很大帮助。但是和下面的代码一样,我认为检查结果是错误的,并尝试了很多方法(我在下面尝试引起恐慌)导致真正的恐慌但失败了。所以,我想知道是否该代码是正确的,比赛检查是错了吗?或者你可以修改我的代码,这样我可以查阅一个真正的恐慌。非常感谢。
package main
import "fmt"
type myType struct {
A int
}
func main(){
c:=make(chan bool)
x := new(myType)
go func(){
x = new(myType) // write to x
c <- true
}()
_ = *x // read from x
<-c
fmt.Println("end")
}
Run Code Online (Sandbox Code Playgroud)
go run -race test.go
==================
WARNING: DATA RACE
Write at 0x00c00009c010 by goroutine 6:
main.main.func1()
/Users/yaodongen/test.go:12 +0x56
Previous read at …Run Code Online (Sandbox Code Playgroud)