LoginSignup
4
5

More than 5 years have passed since last update.

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

Posted at

はじめに

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

4
5
0

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
  3. You can use dark theme
What you can do with signing up
4
5