在現(xiàn)實的項目開發(fā)過程中布持,都有?Nocpoy?對象的需求特石,那么如何在golang中實現(xiàn)這個特性呢?
查看 src/sync中的包鳖链,很多都有 noCopy 結(jié)構(gòu)體,其定義如下:
// noCopy may be embedded into structs which must not be copied
// after the first use.//// See https://golang.org/issues/8005#issuecomment-190753527
// for details.
type noCopy struct{}
// Lock is a no-op used by -copylocks checker from `go vet`.
func (*noCopy) Lock() {}
定義很簡單墩莫,包含 Lock 接口的一個空結(jié)構(gòu)體芙委。
具體可以查看?nocopy issue,里面是對?如何實現(xiàn)Nocpoy特性的討論狂秦。
注意:nocopy 只有在使用 go vet 檢查時才能顯示錯誤灌侣,編譯正常。
如以下代碼:
noCopy?測試
上面這段代碼編譯裂问,運行沒有任何問題侧啼,但是使用 go vet?檢查會提示錯誤。
vscode在編寫代碼時會下標藍色下劃線來提示疑似錯誤的代碼堪簿。