はじめに
mattnさんのブログ記事「golang 1.5 の internal パッケージの使い方。」を試してみました。
ディレクトリー構成
$GOPATH/src/github.com/
|
+--mattn/go15internal/
| +--bar/bar.go
| +--foo/foo.go
| +--internal/hello/hello.go
|
+--qt-luigi/go15internal_func/
| +--func.go
|
+--qt-luigi/go15internal_main/
+--main.go
"qt-luigi/go15internal_*/
"はローカルで作成したものでGitHubには存在しませんm(__)m
ソースコード
func.go
package go15internal_func
import (
"github.com/mattn/go15internal/internal/hello"
)
func Hello() {
hello.Hello("gopher")
}
main.go
package main
import (
"github.com/mattn/go15internal/internal/hello"
)
func main() {
hello.Hello("gopher")
}
goツール実行
go15internal_func/ 配下
$ go run func.go
go run: cannot run non-main package
$ go build func.go
$ ls
func.go
$ go build
package github.com/qt-luigi/go15internal_func
imports github.com/mattn/go15internal/internal/hello: use of internal package not allowed
go15internal_main/ 配下
$ go run main.go
Hello gopher
$ go build main.go
$ ls
main main.go
$ ./main
Hello gopher
$ go build
package github.com/qt-luigi/go15internal_main
imports github.com/mattn/go15internal/internal/hello: use of internal package not allowed
おわりに
internalパッケージの呼び出しでエラーを出してくれるのは"go build (ファイル指定なし)
"の場合です。私はファイルを指定する手癖があるのでハマりました。q@w@p