概要 internal packageはgo1.4で追加されたものです。 Goでのアクセス制御は、大文字で始まるものがpublic、小文字で始まるものがprivateの2種類でしたが、 internal packageを使うことによって、package privateにすることができるようになりました。 背景 以下のような問題を解消するために、internal packageは追加されました。 パッケージ外非公開とするために、標準ライブラリ内でコードが重複するケースがあった net/httpを例に上げると、go1.3では、chunked.goという全く同じファイルがnet/httpとnet/http/httputilに2つ存在していました。 ソースコードにも、下記のようなコメントがあったりして残念な感じでした。 go1.4では、この重複はnet/http/internal/chunked.