Go 初心者のため、勉強も兼ねて import の書き方についてまとめました。
相対パスでのインポート
import "./model"
この方法による import はおすすめされていないようです。
絶対パスでのインポート
import "shorturl/model"
絶対パスを指定してインポートします。
単一行での import
import "fmt"
import "string"
一行に一つのパッケージを記入する書き方です。
グループ化
import (
"fmt"
"string"
)
一つの import ステートメントで複数のパッケージをインポートする書き方です。
ドット操作
import (
. "fmt"
"string"
)
通常、「fmt.Println("hello world")
」と書くところをドットをつけてインポートすると「Println("hello world")
」と書くことができます。
つまり、ドット付きインポートはパッケージの関数を呼び出す際にパッケージ名を省略して書くことができます。
エイリアス操作
import (
f "fmt"
)
このような書き方でパッケージ名にエイリアスをつけることができます。
上の場合、「fmt.Println("hello world")
」のかわりに「f.Println("hello world")
」とエイリアスを用いて書くことができます。
アンダースコア操作
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
インポートしたパッケージの関数を直接は使わないけれど、依存関係によってインポートの必要がある時にinit関数だけを実行するとういことですかね…。
(完全には理解しきれていない…´・ω・`)
_操作はこのパッケージをインポートするだけでパッケージの中の関数を直接使うわけではなく、このパッケージの中にあるinit関数をコールします。
インポート宣言は、インポート「する側」と「される側」の依存関係を宣言します。自分自身のパッケージをインポートすること、またはインポートしたパッケージ内でエクスポートされている識別子を一切参照しないことは誤った使い方です。インポートによる副作用(初期化)のためだけにパッケージをインポートするときは、パッケージ名としてブランク識別子を使ってください。
参考
http://golang.jp/2010/01/1061
http://astaxie.gitbooks.io/build-web-application-with-golang/content/ja/02.3.html#import
http://qiita.com/shiena/items/c1ac3192af3b00f413ac