新手学go,跨目录调用方法是真的难,弄了好几天,几乎要放弃go了,在此演示一下如何跨目录(包)调用~
需求是main.go调用model包下mysql.go中Query方法,目录结构如下。
要点:
1.新建project时路径需要用域名形式(带符号‘.’),如test.cn,如果是普通的不带'点'的名字 GoLand引用时会报错。
2.设置中启用“Enable Go Modules”
3.在项目跟目录下执行go mod init
4.调用时带上项目名,如import "test.cn/model"
具体方法:
1) project名使用域名,可新建test.cn,或者在已经建好的目录上右键Refactor,把文件夹名和project名都改了。
2) Setting中设置启用go module(其他go path之类的无需设置,使用默认),路径:Go——Go Modules(vgo),勾选Enable Go Modules、不要勾选vendoring否则会有其他问题。
3) 在编辑器左下方找到“Terminal”选项卡,进入后执行 go mod init命令,提示creating new go.mod即为成功
4) 调用 import "test.cn/model",注意被调用的方法名首字母要大写哦!
两个文件代码如下:
main.go
package main import ( "fmt" "test.cn/model" ) func main(){ var result string result = model.Query() fmt.Println(result) }
mysql.go
package model func Query() string{ return "张三" }
执行结果如下
import (
"fmt"
"test.cn/model"
)