#

# 1. 概述

一个项目包含多个文件,把不同的功能放到不同的文件中,这样可提高项目的可阅读性,方便维护,下面介绍如何包的引入和导出。

之前使用 fmt 就是一个外部的文件,也就是 GO 语言中叫包,包其实就是一个文件夹。

每个包都有一个名字,通常写在第一行,package 关键字跟上包名。

package main

上面是定义了一个包叫 main

# 2. 导出

通常项目中包含一个 utils 的包(文件夹),里面存放 utils.go 的文件,专门定义一些工具函数。

// util.go 文件
package utils

// 函数名首字母大写
func Add(x int, x1 int) int{
    return x + x1
}

为了让其他的包使用,函数名首字母大写,内部使用的函数用小写。

# 3. 引入

使用 import 关键字加包的路径,可以引入一个包。

import "fmt"

这是一个包的引入,引入多个包使用括号。

import (
    "fmt"
    "net"
)

默认的根路径是 src 目录,也就是 $GOPATH 里的 src 目录,需要从这个目录开始引入。

已知 src/oa 目录下有一个项目,有一个 utils 包存放在 src/oa/utils/util.go 目录下。

// src/oa/main.go
package main

import (
    "fmt"
    "oa/utils"
)

func main() {
    fmt.Println(utils.Add(1,2)) // 3
}

这是 oa/main.go 文件中使用了 utils 包中的 Add 函数,使用包名 . 函数名。

注意,包对应的文件夹的名与包名(package)必须一致。

# 4. 别名

如果包名太长,可以为包取别名。

import (
    "fmt"
    util "oa/utils" // 给包重命名
)

包只导入不使用

import _ "surpass/dolphin"

上面例子是给 "oa/utils" 包取了 util 的别名,之后以 util.Add(1,2) 来使用。

# 5. go modules

Go 语言没有统一的包管理地址,比如像存放 node.js 包管理的 npm,所以大家都放在 github 上。

go module 是在 1.13 版本以后,Go 语言官方推荐的依赖管理解决方案。

module 是所有包的集合,使用 init 来初始化一个 module,这是在项目根目录下生成 go.mod 文件。

# 初始化一个库
go init github.com/EE/Hello

如果在一个项目中使用了多个包,那么这些信息存放在 go.mod 文件,我们启动这个项目时,需要先下载这些包的集合,使用 tidy 名下载,本项目所有的依赖包。

# 下载项目的依赖
go mod tidy
更新时间: 3/2/2022, 10:24:01 AM