Go 保留字
internal
Go 的 internal 是一個保留目錄名稱,用於限制套件(package)的可見性與匯入範圍。
規則說明
當專案目錄結構中出現 internal 資料夾時:
- 允許匯入:
internal底下的套件只能被與該internal同層或上層的程式碼匯入 - 禁止匯入:其他 repository、其他 Go module 無法匯入
internal內的套件
my-project/
├── go.mod
├── main.go
├── internal/
│ ├── util/
│ │ └── util.go
│ └── config/
│ └── config.go
└── pkg/
└── public/
└── public.go
main.go、pkg/public/public.go可以import "my-project/internal/util"- 另一個 repo(例如
other-repo)的程式碼無法import "my-project/internal/util",編譯會失敗
典型錯誤訊息
若外部專案嘗試匯入 internal 套件,會出現類似:
use of internal package xxx/internal/yyy not allowed