golang之package中引用变量与undefined问题

2021年7月20日14:29:46Golang评论340阅读模式

问题

遇到过这样的问题,IDE与命令行对变量的引用有所不同。举个例子,需要在一个package下两个文件需要引用同一变量或函数,如果在两个文件中都定义,则在IDE中会提示重复定义了某个变量或函数,那好吧,就将该变量放到第三个文件中,此时IDE没问题了,可以正常运行,但在命令行cmd中运行"go test -v t_test.go",却出现了undefined的问题。

原因

这可能是IDE在界面化运行的时候会自动去package下其他文件那里找该变量,所以可以拿到该变量。而使用go test运行某一文件时,只会从该文件以及该文件头部的其他package下找,且由于在同一package下我们没有引入该变量,所以也就找不到了,这样就无法一起编译了,自然出现undefined问题。

解决

将使用和定义处的代码一起编译运行(在同一package里所有文件中的变量函数等都可以互相访问, 无需首字母大写)

go run *.go

go build . && ./run