INDEX
packageの概要
パッケージの定義と管理 Goの予約語 | ||
package 概要 |
||
|
基本的なpackageの使い方
Goのプログラムは必ずパッケージの宣言から始まります。
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
解説:
package main
を宣言することで、Goのエントリーポイントを示します。- このプログラムは
main
関数を含むため、実行可能なプログラムとして動作します。
実行結果:
Hello, Go!
カスタムパッケージの作成と使用
Goでは独自のパッケージを作成し、それを別のファイルで使用できます。
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
を呼び出す。 - カスタムパッケージの関数を外部から利用するためには、関数名を大文字で始める必要がある(エクスポート)。
実行結果:
こんにちは, 太郎
標準ライブラリのパッケージを使用
Goには豊富な標準ライブラリがあり、パッケージをインポートして利用できます。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("現在の時刻:", time.Now())
}
解説:
import "fmt"
で標準出力用のfmt
パッケージをインポート。import "time"
で時刻関連の処理を提供するtime
パッケージをインポート。
実行結果(実行時の日時による):
現在の時刻: 2025-02-01 15:04:05 +0000 UTC
パッケージのエイリアス(別名)を使う
長いパッケージ名を短縮するためにエイリアス(別名)を設定できます。
package main
import (
f "fmt" // fmtパッケージにfというエイリアスを付与
)
func main() {
f.Println("エイリアスを使った出力")
}
解説:
import f "fmt"
のように、パッケージに別名をつけられる。f.Println()
と記述することで、短縮して呼び出せる。
実行結果:
エイリアスを使った出力
init関数を使ったパッケージの初期化
Goのパッケージは、インポートされた際にinit
関数を自動実行できます。
package mypackage
import "fmt"
func init() {
fmt.Println("mypackageが初期化されました")
}
func Greet(name string) {
fmt.Println("こんにちは,", name)
}
解説:
init()
関数は、パッケージがインポートされた際に自動的に実行される。- この仕組みを利用して、初期設定やデータの準備を行うことができる。
注意事項
- 関数や変数を外部パッケージから使うには、大文字で始める: 小文字の識別子はパッケージ内でのみアクセス可能。
- 未使用のパッケージはコンパイルエラー: インポートしたパッケージを使わないとエラーになる。
- 循環インポートは不可: AがBをインポートし、BがAをインポートするような構成はエラーになる。
よくある質問
- Q: すべてのGoプログラムはパッケージを定義する必要がありますか?
- A: はい。Goのすべてのソースコードは
package
宣言から始まる必要があります。 - Q: Goのプログラムを実行するには、どのパッケージが必要ですか?
- A: 実行可能なプログラムは
package main
を持ち、main()
関数を含む必要があります。 - Q: パッケージ内の関数や変数を外部からアクセスする方法は?
- A: 名前を大文字で始めることで、外部パッケージからアクセスできます。
- Q: import時にパッケージを使わないとどうなりますか?
- A: コンパイルエラーになります。ただし、
_
を使うと未使用のパッケージを無視できます(例:import _ "fmt"
)。
まとめ
package
はGoのコードをモジュール化し、整理するために使われる。- エントリーポイントは
package main
で定義される。 - カスタムパッケージを作成し、再利用することでコードの管理が容易になる。
- 標準ライブラリのパッケージを
import
して利用できる。 - パッケージの初期化には
init()
関数を活用する。