标签:com awesome https fun copy pac unlock from pie
go中的copy,一般习惯来讲都是值拷贝,但是这种拷贝存在的问题是锁对象的“失效”
如何对一个对象进行nocopy处理,下面是一种方式
package main import ( "fmt" ) type noCopy struct{} // Lock is a no-op used by -copylocks checker from `go vet`. func (*noCopy) Lock() {} func (*noCopy) Unlock() {} type S struct { noCopy data int } func main() { var s S ss := s fmt.Println(ss) }
但是如果直接build run没问题,我们go vet就会分析出问题
>go vet # awesomeProject2/nocopy .\main.go:19:8: assignment copies lock value to ss: awesomeProject2/nocopy.S .\main.go:20:14: call of fmt.Println copies lock value: awesomeProject2/nocopy.S
end
https://github.com/golang/go/issues/8005
看这个issue里,rob pike似乎对此表示知道但是坚决不改orz
标签:com awesome https fun copy pac unlock from pie
原文地址:https://www.cnblogs.com/CherryTab/p/13210704.html