一、go mod 以及 Golang 自定义包

go mod init 初始化项目

新建一个 demo 文件夹,在 demo 文件夹下新建 go.mod 文件和 main.go 文件,再在 demo 文件夹下新建一个 calc 文件夹,在 calc 文件夹下新建一个 calc.go 文件。

calc.go 代码

package calc  // package 一定要放在最上面

func Add(x, y int) int {  // 首字母大写表示公有方法
    return x + y
}

func Sub(x, y int) int {
    return x - y
}

main.go 代码

package main

import (
    "fmt"
    "demo/calc"  // 使用自定义包
)

func main() {
    sum := calc.Add(10, 2)
    fmt.Println(sum)
}

一个文件夹下直接包含的文件只能归属于一个 package,同样一个 package 的文件不能在多个文件夹下。

因此 calc.go 只属于 calc package。

包前面加下划线空格表示匿名引入包,如果不使用这个包,则不会报错。

import (
    "fmt"
    _ "demo/calc"  // 使用自定义包
)

main 包中,init 函数优先于 main 函数。

最后被导入的包会最先初始化并调用其 init() 函数。

二、参考教程

Golang 教程 P35