目录 在一个空文件夹下,初始化一个 Module 此时,在当前文件夹下生成了go.mod,这个文件记录当前模块的模块名以及所有依赖包的版本。 接着,我们在当前目录下新建文件 main.go,添加如下代码: 运行 手动执行第三方包 rsc.io/quote的下载,具体的版本信息也记录在了go.mod中 在 go.mod 的第5行是直接依赖,后面的 // indirect 是间接依赖 可以通过 第一行是当前模块,也称为主模块。后面的是依赖,依赖包含名称和版本号,第一个依赖是伪版本号,后面的是正常的语义版本标签。 go.sum 中包含了模块的哈希值 我们在当前目录,添加一个子 package calc,代码目录如下: 在 calc.go 中写入 在 package main 中如何使用 package cal 中的 Add 函数呢?import 模块名/子目录名 即可,修改后的 main 函数如下:
$ go mod init example
go: creating new go.mod: module example
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello()) // Ahoy, world!
}
go run .
,输出如下main.go:6:2: no required module provides package rsc.io/quote; to add it:
go get rsc.io/quote
module example
go 1.22.2
require rsc.io/quote v1.5.2
require (
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c // indirect
rsc.io/sampler v1.3.0 // indirect
)
go list -m all
列出当前模块和所有依赖$ go list -m all
example
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
demo/
|--calc/
|--calc.go
|--main.go
package calc
func Add(num1 int, num2 int) int {
return num1 + num2
}
package main
import (
"fmt"
"example/calc"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello())
fmt.Println(calc.Add(10, 3))
}
$ go run .
你好,世界。
13