Go
golang

【Go】import 書き方まとめ

More than 3 years have passed since last update.

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関数だけを実行するとういことですかね…。
(完全には理解しきれていない…´・ω・`)

http://astaxie.gitbooks.io/build-web-application-with-golang/content/ja/02.3.html#import

_操作はこのパッケージをインポートするだけでパッケージの中の関数を直接使うわけではなく、このパッケージの中にあるinit関数をコールします。

http://golang.jp/2010/01/1061

インポート宣言は、インポート「する側」と「される側」の依存関係を宣言します。自分自身のパッケージをインポートすること、またはインポートしたパッケージ内でエクスポートされている識別子を一切参照しないことは誤った使い方です。インポートによる副作用(初期化)のためだけにパッケージをインポートするときは、パッケージ名としてブランク識別子を使ってください。

参考

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