search
LoginSignup
5

More than 5 years have passed since last update.

posted at

「golang 1.5 の internal パッケージの使い方。」を試してみた

はじめに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5