INDEX
importの概要
パッケージのインポート Goの予約語 | ||
import 概要 |
||
|
基本的なimportの使い方
標準ライブラリのfmt
パッケージをインポートして、文字列を出力する例です。
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
解説:
import "fmt"
で、標準ライブラリのfmt
パッケージを読み込む。fmt.Println()
を使用して文字列を出力できる。
実行結果:
Hello, Go!
複数のパッケージをインポート
複数のパッケージを一度にインポートする場合、括弧を使ってまとめることができます。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("平方根:", math.Sqrt(16))
}
解説:
import
の後に括弧を使うと、複数のパッケージを整理して記述できる。math.Sqrt(16)
を使って平方根を計算している。
実行結果:
平方根: 4
パッケージ名のエイリアス(別名)
長いパッケージ名を短縮するためにエイリアス(別名)を設定できます。
package main
import (
f "fmt"
)
func main() {
f.Println("エイリアスを使った出力")
}
解説:
import f "fmt"
のように、パッケージに別名をつけられる。f.Println()
と記述することで、短縮して呼び出せる。
実行結果:
エイリアスを使った出力
空インポート(パッケージの初期化のみ)
パッケージの初期化処理のみを実行し、関数や変数を直接使用しない場合に_
を使った空インポートを行います。
package main
import (
_ "github.com/lib/pq" // PostgreSQLドライバの初期化のみ
"database/sql"
"fmt"
)
func main() {
fmt.Println("データベース処理を開始")
}
解説:
_ "github.com/lib/pq"
のように、パッケージ名の前に_
をつけると、そのパッケージのinit()
関数だけが実行される。- この手法は、データベースドライバやプラグインの初期化などに使用される。
実行結果:
データベース処理を開始
カスタムパッケージのインポート
独自に作成したパッケージをインポートすることも可能です。
1. カスタムパッケージ(mypackage/greet.go)
package mypackage
import "fmt"
// Greet 関数をエクスポート
func Greet(name string) {
fmt.Println("こんにちは,", name)
}
2. カスタムパッケージを使う(main.go)
package main
import (
"mypackage"
)
func main() {
mypackage.Greet("太郎")
}
解説:
mypackage
というパッケージを作成し、Greet
関数を定義。- メインプログラム(
main.go
)でmypackage
をインポートし、mypackage.Greet
を呼び出す。 - エクスポートする関数は大文字で始める必要がある。
実行結果:
こんにちは, 太郎
注意事項
- 未使用のパッケージはコンパイルエラー: インポートしたパッケージを使わないとエラーになる。ただし、
_
を使えば回避可能。 - パッケージのエクスポートは大文字で始める: 小文字の関数や変数は他のパッケージからアクセスできない。
- 循環インポートは不可: AがBをインポートし、BがAをインポートするような構成はエラーになる。
よくある質問
- Q: Goのimportはなぜ明示的に未使用のパッケージを禁止するのですか?
- A: Goの設計思想として「不要なコードを含めない」ことがあり、未使用のパッケージをインポートするとコンパイルエラーになります。
- Q: importの際にパッケージのフルパスが必要なのはなぜですか?
- A: Goでは、GOPATHやGo Modulesを利用してパッケージを管理するため、パッケージのフルパス(例:
github.com/user/repo
)が必要になります。 - Q: `import _ “パッケージ名”` の用途は何ですか?
- A: そのパッケージの
init()
関数のみを実行し、直接そのパッケージの関数や変数を参照しない場合に使われます。データベースドライバなどの初期化処理でよく使われます。 - Q: importのエイリアスを使うメリットは?
- A: 長いパッケージ名を短縮できるほか、同じ名前のパッケージが複数ある場合の競合を避けるのに役立ちます。
- Q: importの順番にルールはありますか?
- A: 慣習として、標準ライブラリ、サードパーティライブラリ、自作のパッケージの順に記述することが推奨されています。
まとめ
import
を使うと、標準ライブラリや外部パッケージを利用できる。- 複数のパッケージを括弧を使ってまとめてインポートできる。
- エイリアスを使うとパッケージ名を短縮できる。
- 空インポート(
_
)を使うと、パッケージの初期化処理のみを実行できる。 - 未使用のパッケージはコンパイルエラーになるが、
_
を使えば回避可能。 - 循環インポートはエラーになるため、適切な設計が必要。