我的程序路径 D:\goprojects\src\Go_Learn\function_learn\demo03
在学习包的调用时,在引用包处配置了当前主目录下其他子目录包的路径,但是运行run报错了:
package src/Go_Learn/function_learn/demo02 is not in GOROOT (c:
Go_Learn\function_learn\demo02)
提示无法在GOROOT目录下找到该路径?为什么要去GOROOT找呢?
百度了一下,根据其他人给的方法解决了,方法如下
使用go mod
在D:\goprojects\src\Go_Learn\function_learn目录下,
运行 go mod init test //test是自定义的名字,任意名字
再回到import处,修改引用包路径为:
import (
"fmt"
"test/demo02"
)
最终main.go代码如下:
package main
//包的引用
import (
"fmt"
"test/demo02"
)
//函数内部调用,递归调用
func test(n int) {
if n > 2 {
n--
test(n)
}
fmt.Println(n)
}
func main() {
test(4)
fmt.Println("========")
utils.Test(6)
}
此时再运行go run 正常执行,demo02目录下的utils.go成功调用了
D:\goprojects\src\Go_Learn\function_learn\demo03>go run main.go
2
2
3
========
2
于此,得出结论,通过go mod init test 可以初始化一个当前程序路径的GOPATH变量,若配置了包调用逻辑,go运行时会以test作为起始根目录引用子目录的包