学习golang不久,在定义全局变量的时候遇见了坑。写个小例子,增强记忆。

错误版本

var p int

func main() {
	p, err := test(4)
	if err != nil {
		log.Fatal(err)
	}
}

func test(i int) (int, error) {
	return i + 1, nil
}

编译一直不通过,p declared and not used。后来查了查资料,看见这种其实是在main里边又重新定义了p,所以一直提示p定义了但是没有使用。修改如下:

正确版本

var p int

func main() {
	var err error
	p, err = test(4)
	if err != nil {
		log.Fatal(err)
	}
}

func test(i int) (int, error) {
	return i + 1, nil
}