跳到主要内容

可见性

导出规则

概念

  • 导出标识符: 首字母大写,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