版本 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