go导入自定义包

本文参考CSDN博客

环境

  • ubuntu18.04
  • go 1.18

项目结构

创建go项目

创建一个项目目录learn,在learn目录下编辑main.go文件

1
2
3
4
5
6
7
8
9
package main

import (
"fmt"
"learn/math"
)
func main() {
fmt.Println(math.Add(1, 3))
}

自定义包

learn目录下创建math目录,在math目录下创建math.go文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package math
func Add(a int, b int) int {
return a + b
}

func Sub(a int, b int) int {
return a - b
}

func Mul(a int, b int) int {
return a * b
}

func Div(a int, b int) int {
return a / b
}

这里需要注意的是:

  1. 包目录下所有文件 package 必须和目录名保持一致,例如math目录下所有包文件 *.go 必须引用 package math.
  2. 外部接口必须以大写字母开头,例如Add(),否则外部无法调用

导入自定义包

在main包里面导入自定义包,需通过mod命令初始化,将go项目添加到环境中去。

打开终端,进入hello目录

1
go mod init hello

此刻生成go.mod文件便可以自由导入自定义包而不会找不到包了

main.go文件导入包格式如下

1
2
3
4
5
6
7
8
9
package main

import (
"fmt"
"learn/math"
)
func main() {
fmt.Println(math.Add(1, 3))
}

go mod init learn的时候将learn目录导入到go环境查找目录中去了,所以导入的库目录需以"learn/“为查找路径,math目录在learn目录下,查找路径便是"learn/math”;