可见性
导出规则
概念
- 导出标识符: 首字母大写,package 外可见;
- 非导出标识符: 首字母小写,仅 package 内可见;
- 可见性粒度: package,而不是文件;
语法格式
package user
type Profile struct {
Name string // 首字母大写字段,package 外可见
age int // 首字母小写字段,仅 package 内可见
}
internal 包
概念
internal: 受 Go 工具链限制的内部包目录;- 导入限制: 只有
internal父目录及其子目录下的包可导入; cmd: 约定放置可执行程序入口;pkg: 约定放置可被外部复用的公共包;
目录结构
project/
├── go.mod
├── cmd/
│ └── app/
│ └── main.go
├── internal/
│ └── service/
│ └── user.go
└── pkg/
└── id/
└── id.go