# 模块调用

# 1、创建目录

在 src 目录下创建测试项目 mydemo,然后 cd 进入该目录,并创建 homemods 两个子目录

  • home 主程序代码
  • mods 模块代码

# 2、创建模块

进入 mods 目录,创建 maths.go 文件,编写如下代码:

package mods

func init() {
    // init 函数会在模块导入的时候自动调用,可以编写多个 init 函数
}

func Add(a int, b int) int {
	return a + b
}
1
2
3
4
5
6
7
8
9

然后运行命令 go mod init mydemo/mods 会创建 go.mod 文件,也可以手动创建该文件

module mydemo/mods

go 1.21.0

1
2
3
4

根据警告信息,在 mydemo 目录创建 go.work

go 1.21.0

use ./mods

1
2
3
4

# 3、编写主程序

进入 home 目录,创建 main.go 文件,编写如下代码:

package main

import (
	"fmt"
	"mydemo/mods"
)

func main() {
	fmt.Println("hello world")
	a := mods.Add(2, 4)
	fmt.Println(a)
}
1
2
3
4
5
6
7
8
9
10
11
12

然后运行命令 go mod init mydemo/home 会创建 go.mod 文件,也可以手动创建该文件

module mydemo/home

go 1.21.0

1
2
3
4

添加模块依赖:

go mod edit -replace mydemo/mods=../mods

# 设置模块版本
go mod tidy
1
2
3
4

最终 go.mod 内容为:

module mydemo/home

go 1.21.0

replace mydemo/mods => ../mods

require mydemo/mods v0.0.0-00010101000000-000000000000

1
2
3
4
5
6
7
8

模块路径后面的数字是伪版本号 - 用于代替语义版本号(模块还没有)的生成的数字

要引用已发布的模块,go.mod 文件通常会省略 replace 指令并使用末尾带有标记版本号的 require 指令。

require mydemo/mods v0.0.1

上次更新: 8/31/2023, 6:23:39 PM