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

2021年7月20日14:29:46
评论
12

更多分类文章:

Python | Linux | 大数据 | 数据库 | Git | Nodejs | Golang | 电脑技巧 | 计算机技术

 

问题

遇到过这样的问题,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


原文链接:golang之package中引用变量与undefined问题

  • 本文由 发表于 2021年7月20日14:29:46
  • 转载请注明:https://www.wanghaoyi.com/golang-package-undefined.html
golang创建web监听在tcp6而非tcp4的解决 Golang

golang创建web监听在tcp6而非tcp4的解决

在用golang建立web时,不管是用原生库还是使用gin框架,发现服务器起来后最终都会监听到tcp6。查stackoverflow得知,如果想要默认监听tcp4/tcp6需要修改下源码。 修改$GO...
golang格式化占位符 Golang

golang格式化占位符

golang使用fmt包来实现格式化输出,各类占位符汇总如下: 结构体 # 定义示例类型和变量 type Human struct { Name string } var people = Human...
Docker容器初学笔记整理 Golang

Docker容器初学笔记整理

“Docker是一个开源的应用容器引擎”,这个概念解释说了等于没说。其实就是个虚拟机,如果我们用过类似VMware这样的虚拟机软件就知道了,在windows上可以跑Linux、mac,反过来也可以。但...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: