添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在学习 Golang 时,自己最开始用的是 Eclipse 中的 goclipse 插件来进行 Golang 编程,但其对 Golang 的支持不是太好,如代码格式化、自动导入引用包等都无法直接在 Eclipse 中使用,并且其自动提示功能也没有像 Java 那么强,于是转用 Intellij IDEA 安装 Golang插件 来替代使用,安装完插件后的 Intellij IDEA Golang 的支持在各方面都很令人满意,唯独引入本地包的支持不太好用。经过一阵摸索自己找出了解决方案,先记录下。

在Eclipse中引用Golang本地包

若我们采用的是 goclipse 来开发 Golang ,则在其中引用本地包很简单,和引用 Java 包类似。如下图所示,假设 src是源代码所在的目录,在src的sec文件夹下有一个名为calculate.go的文件,其中有一个名为Add的函数用于计算两个整数的相加之和。
若要在主程序main方法中调用Add方法,先通过import引入该文件的包名 import service ,然后通过包名调用该方法 service.Add(1,2) ,如下图所示,可以看出在 eclipse 中引用 Golang 本地包与引用Java包没有太大的区别,都是将包文件放到src源文件夹下,然后通过包名来引用。
也可以通过直接导入该包所在的文件夹的名称来调用该方法,此时需要将 import service 改为 import sec ,如下图所示
可以看出在 Eclipse 中导入 Golang 本地包时有两种方法: 通过import导入包名 通过import导入该包对应的文件夹 ,这两种方法均可使程序正常运行。

在Intellij IDEA中引用Golang本地包

下面2张图为在IDEA中建立的对应项目,图中gproject是一个项目,gotest是一个模块,我们在gotest下建立相关的测试文件。
在上述代码中我们是通过 import service 的方式来导入相应包的,由于IDEA对Golang很强,从图中可以看出service的颜色与其它导入包的颜色不一致,当把鼠标移动到service上时会提示 Cannot resolve file 'service' ,直接运行时,会出现如下图所示 cannot find package 错误,将 import service 修改为 import sec 时,会出现同样的错误,可以看出在idea中默认不支持直接导入本地 Golang 包。
从报错信息可以看出,程序在运行时先去 GOROOT 去搜索导入包,然后去 GOPATH 寻找导入包,最后在当前项目模块下寻找导入包,但实际上不存在D:\program\IntelliJ IDEA 2016.2.1\workspace\gproject\gotest\src\service这个目录,故而程序报错,不能正常运行。

解决该问题的关键是明白 GOROOT GOPATH 的作用,根据官方文档的解释 GOPATH 的主要作用是存放文件以便 Golang 程序编译时可以进行搜索引用, GOPATH 可以设置一个值或多个值,多个值之间以分号隔开。很明显只要我们将本地 Golang 加入到 GOPATH 中即可在IDEA中正常运行该程序。

如下图所示,在IDEA中依次选择 File->Settings->Language&Frameworks->Go->Go Libraries ,会出现如下图所示的配置 Golang 库的界面,在该界面可以添加 Golang 本地包所在的路径,该界面包含3个不同作用范围的配置方式: Global libraries Project libraries Module libraries ,其中 Global libraries 的配置对所有项目生效为全局配置, Project libraries 的配置对整个项目生效, Module libraries 的配置只对模块生效,可以看出在 Global libraries 默认包含了 GOPATH 。根据实际使用的需求我们可Z选择把本地包设置在 Project libraries 还是 Module libraries 中。
本文的程序都是在gotest模块下,故将其添加到 Module libraries 下,添加完的结果如下所示:
将本地包添加到模块库之后,还需要在go文件中将导入包的语句设置为 import sec ,不能设置为 import service ,然后该 Golang 程序即可正常运行。

可以看出,不同于 goclipse ,在IDEA中只能使用 通过import导入该包对应的文件夹 来导入本地 Golang 包,至于原因还需要进一步研究。

利用Goclipse时无法运行程序的解决方法

在使用 goclipse 运行 Golang 程序时,偶尔会出现程序无法编译和运行的情况,这种情形一般都是src没有被设置成源代码目录造成的,此时可以通过如下图所示的方法,将src目录添加源代码目录。在Eclipse中选中该项目然后点击 Properties ,会出现项目属性配置界面,点击 Go Project Configuration ,通过 Add Folder 可以将src添加到源代码中,之后程序即可正常运行。

在本文写作的时(2017年3月份), jetbrain 官方出版了 GoLand ,建议在条件许可的情况下优先使用 GoLand

支持正版,从我做起!