![fa0a13fdfad3eb1e53936b755ccd10c6.png](https://i-blog.csdnimg.cn/blog_migrate/186407a7a7e44e9e5f49b4dda06f9686.jpeg)
go tool vet -copylocks
命令简介
Go 语言安装包附带 vet 命令行工具。该工具能对程序源码运行一套启发式算法以发现可疑的程序结构,如无法执行的代码或对 fmt.Printf
函数的错误调用(指 arguments 没有对齐 format 参数):
package main
import "fmt"
func f() {
fmt.Printf("%dn")
return
fmt.Println("Done")
}
> go tool vet vet.go
vet.go:8: unreachable code
vet.go:6: missing argument for Printf("%d"): format reads arg 1, have only 0 args
本文专讲该工具的 copylocks 选项。让我们看看它能做什么以及如何在实际的程序中发挥作用。
假设程序使用互斥锁进行同步:
package main
import "sync"
type T struct {
lock sync.Mutex
}
func (t *T) Lock() {
t.lock.Lock()
}
func (