go代码里使用import去导入包文件,比如常见的import fmt
,这个命令实际上导入的就是GOROOT\src\fmt
。但是当遇到需要导入本地包的时候,就需要配置一下。
我windows里的go脚本文件夹是E:\github\GoeveryDay
,现在在这个文件夹里创建src\chentest\
,然后在src\
下面创建一个chenchen.go
,在chentest\
下创建testtest.go
,如图:
而chenchen.go
的内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package main
import (
"chentest"
"fmt"
)
func main(){
chentest.XXX()
var s1 chentest.Player
s1.Name = "iverson"
s1.Number = 3
s1.Team = "76ers"
fmt.Println(s1)
}
现在需要让chenchen.go
能成功调用到chentest.go
里的XXX
函数,如果此时在chenchen.go
里直接import testtest.go所在文件夹
是会报错的,错误提示是Cannot resolve file ‘testtest.go所在文件夹’
,这是因为程序在运行时先去GOROOT去搜索导入包,然后去GOPATH寻找导入包,最后在当前项目模块下寻找导入包,如果三个都找不到就会报错。
可见在idea中默认不支持直接导入本地Golang包,那么解决该问题的关键是明白GOROOT和GOPATH的作用,根据官方文档的解释GOPATH的主要作用是存放文件以便Golang程序编译时可以进行搜索引用,GOPATH可以设置一个值或多个值,多个值之间以分号隔开。很明显只要我们将本地Golang加入到GOPATH中即可在IDEA中正常运行该程序。
那么先File--Settings--Languages & Frameworks--Go--GOPATH
,在project GOPATH里添加E:\github\GoeveryDay
这个总的文件路径,如图:
apply保存即可,记住这里不能填E:\github\GoeveryDay\src
,因为系统会自带src目录,如图:
此时再执行就得到正确结果了!如图:
但是要注意,要使用本地包函数、结构体、结构体的成员,首字母必须是大写!如果首字母是小写是私有的,即不可见的,只能在同一个包里使用。