版本 1.18
创作目的: 之前想要在go的项目里引用另一个自己写的项目, 然后被折磨半天,乃至弃坑
1,创建项目
我们创建目录gogogo,下面有两个项目:
分别创建main.go
utils/main.go
package utils
import "fmt"
// 大写才能被外部访问
func Log(){
fmt.Print("go mod is shit")
}
demo/main.go
package main
import (
"fmt"
"utils" // 这个就是我们的另一个项目
)
func main() {
fmt.Print("hello\n")
utils.Log() // 调用另一个项目的方法
}
2,分别初始化项目 (go mod init 项目名)
cd demo
go mod init demo
go mod tidy
cd utils
go mod init utils
go mod tidy
此时代码结构如下,自动生成了go.mod
!!!注意: 如果你init的项目名包含关键字或go使用的名称,则会失败!!!
3,重头戏: 修改go.mod
使用replace关键字指定 引入的包名对应的目录
此时使用go mod tidy (这个命令其实是让go处理依赖,如果有远端的依赖会自动下载)
结果,发现go.mod悄然发生了一些变化?!
4,曲终: 使用go命令运行main.go
运行go文件方案一: 简单粗暴直接运行
go run main.go
运行go文件方案二: build后执行exe
go build
# build完之后会生成 项目名.exe 文件
demo.exe