# 创建与使用自定义包

URL: https://caijiao.org/go/03-structured/11-custom-packages
Source: docs/go/03-structured/11-custom-packages.md
Description: 本节介绍如何创建和使用自定义包，帮助组织和复用 Go 代码。

## 1. 创建自定义包

在项目中创建一个文件夹作为包名，例如 `mypkg`，并在包内文件顶部声明包名：

```go
// 文件路径：mypkg/math.go
package mypkg

func Add(a, b int) int {
    return a + b
}
````

## 2. 使用自定义包

在其他包中通过 `import` 导入自定义包：

```go
import (
    "fmt"
    "your_module_name/mypkg"
)

func main() {
    sum := mypkg.Add(3, 5)
    fmt.Println("Sum:", sum)
}
```

注意：`your_module_name` 是 `go.mod` 中定义的模块路径。

## 3. 包的导出规则

包中首字母大写的函数、变量、类型等是导出的，外部包可以访问；首字母小写则为私有。

```go
// 导出函数
func Add(a, b int) int { ... }

// 私有函数
func helper() { ... }
```

## 4. 初始化函数

包可以定义 `init` 函数，在程序启动时自动执行：

```go
func init() {
    // 初始化代码
}
```

---

自定义包有助于分离逻辑，提高代码复用与维护性。
