はじめに
Goのinternalパッケージについて学ぶ記事です。
下記記事を実際に動かすとどうなるんだろうと思い、試してみました!
ソースコード
参考記事と同様のディレクトリ構成
ディレクトリ構成
~/go/internal_jikken$ tree
.
├── b
│ └── d
│ ├── d.go
│ └── internal
│ └── e
│ └── e.go -- d.goからのみアクセス可能
├── c
│ └── c.go -- internal配下のe.goはアクセス不可能
└── go.mod
6 directories, 4 files
internalディレクトリ内のファイル
b/d/internal/e/e.go
package e
import "fmt"
func InternalFunc() {
fmt.Println("This is an internal function!")
}
import可能
internalと同階層ディレクトリに配置されているパッケージb/d/d.go
はimport可能
問題なくimportできています
import不可
internalと異なるディレクトリに保存されている場合はimport不可
importしようとするとコンパイルエラーが発生します
おわりに
確かにimportエラーが発生しましたね。
外部からアクセスする要件がない場合に利用すると効果的ですね!!⭐️