package main
import("fmt""github.com/google/uuid""github.com/sirupsen/logrus")funcmain(){
fmt.Println("hello, world")
logrus.Println(uuid.NewString())var(
a int=10
b int8=6
s string="hello"
c rune='A'
t bool=true)var res int= a *int(b)
fmt.Println(res)
fmt.Println(s)var res2 rune=rune(res)/ c
fmt.Println(res2)
fmt.Println(t)var a1 =11
fmt.Println("a1 =", a1)foo(5)
fmt.Println("after calling foo, a1 =", a1)}funcfoo(n int){
a1 :=1
a1 += n
}
输出如下:
hello, world
time="2023-08-17T16:04:43+08:00" level=info msg=712d41da-1efa-42eb-91f0-5a3ee017cc0e
60
hello
0true
a1 =11
after calling foo, a1 =11
Go 官方提供了 go vet 工具可以用于对 Go 源码做一系列静态检查,在 Go 1.14 版以前默认支持变量遮蔽检查,Go 1.14 版之后,变量遮蔽检查的插件就需要我们单独安装了:go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow@latest。
一旦安装成功,我们就可以通过 go vet 扫描代码并检查这里面有没有变量遮蔽的问题了。
执行检查的命令如下:go vet -vettool=$(which shadow) -strict xxx.go。