Help us understand the problem. What is going on with this article?

【Go】import 書き方まとめ

More than 5 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

taji-taji
植物系エンジニア。 こんなiOSアプリ作りました。 「観察日記」 https://appsto.re/jp/kHAx_.i 「My Closet」 https://appsto.re/jp/OBRIcb.i
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away