重点
首先你要确认你的GOPath
我是winodw系统,所以如图
所以你要创建的文件是在$GOPATH(我这里是E:\LearnFile\GO)\src
文件下
项目结构
- 你只能有一个
main包
和main函数
go文件内容
./hello/hello.go
- 这是正常引入,不会报错,但是这个不是主文件
package hello
import "fmt"
func Hello(){ //一定要大写开头(大写开头相当于public Hello();小写开头相当于private hello())
fmt.Println("hello")
}
./main/main.go
package main
import (
"fmt"
//$GOPATH/src后的hello包路径
"VSCode/Test01/hello01/hello"
)
func main(){
fmt.Println("你好,这是主文件")
hello.Hello()
}
package 包名 is not in GOROOT
1、你的
GOPATH
如上图配置一样正确
- 查看GOPATH
get env GOPATH
- 设置打开GO111MODULE
go env -w GO111MODULE=on
打开时,你会发现它只找你的GOROOT
(最好不要做更改,这是你的GO的安装路径),一般先是找你的GOROOT
如果没有那就会找GOPATH
,如果GOPATH
没有才会报错
如果出现package 包名 is not in GOROOT
那就尝试关闭GO111MODULE
go env -w GO111MODULE=off
GO MOD笔记
go mod init 模块名(项目名)
这时你就要打开GO111MODULE
go env -w GO111MODULE=on
暴露一下我的俩个项目结构(不然看不懂)
hello02/hello.go
package hello02
import "fmt"
func Hello() {
fmt.Println("hello go this is hello02/hello")
}
hello02/go.mod
module hello02
go 1.19
hello01/main/main.go
package main
import (
"chentianyu.com/hello02"
"fmt"
)
func main() {
hello02.Hello()
fmt.Println("你好,这是主文件")
}
hello01/go.mod
module hello01 //项目名称
go 1.19 //go版本
//require加入依赖
require (
chentianyu.com/hello02 v0.0.0
)
replace (
//替代的模块名 => 替代的原有的真实路径(注:都是在GOPATH路径下的文件,这个'../'是在GOPATH路径下的上一级目录)
chentianyu.com/hello02 => ../hello02
)
注意
运行路径(go run 有main包的路径
)是你的文件路径(E:\LearnFile\GO\src\VSCode\Test01\hello01)
go.mod引用当前项目文件
项目结构
hell01(项目名)/
go.mod
module hello01
go 1.19
require (
chentianyu.com/hello v0.0.0
chentianyu.com/hello02 v0.0.0
)
replace (
chentianyu.com/hello => ./
chentianyu.com/hello02 => ../hello02
)
hello01(项目名)/main/
main.go
package main
import (
"chentianyu.com/hello"
"fmt"
)
func main() {
hello.Hello()
fmt.Println("你好,这是主文件")
}
hello01(项目名)/
hello.go
package hello
import "fmt"
func Hello(){ //一定要大写开头(大写开头相当于public Hello();小写开头相当于private hello())
fmt.Println("hello")
}