Go言語学習その36~パッケージその1
Java にも存在するパッケージが Go にもあるようです。
Go におけるパッケージがどういうものか見てみます。
■ すべてのソースはパッケージ内にある
以下は文字を出力するだけの単純なサンプルです。
package main
import "fmt"
func main() {
fmt.Println("文字出力")
}
まず、以下の行でソースコードが属するパッケージ名を指定しています。
main パッケージに所属しているコードであることを宣言しています。
Go ではソースコードは必ず何らかのパッケージに所属させないといけないようです。
これは Java でも同じですね。
※ Java では package 宣言を省略できますが、
省略していても、デフォルトパッケージ(無名パッケージ)に
所属しているという扱いになります
■ main パッケージから始める
先ほどのサンプルのパッケージ宣言を
package main
ではなく
package sample
に変えてみます。
package sample
import "fmt"
func main() {
fmt.Println("文字出力")
}
実行してみたらおこられました。
Go ではプログラムは main パッケージから始まる仕様になっているようで
必ず main パッケージが存在しないといけないようですね。
■ main 関数から始まる
今度は、
・パッケージは main
・実行する関数名は sample
にして実行してみました。
package main
import "fmt"
func sample() {
fmt.Println("文字出力")
}
おこられました。
Go は main パッケージから処理が始まる仕様ですが、
さらに必ず main 関数が存在しないといけないようですね。
main パッケージの main 関数から処理が始まるってことのようです。
■ デフォルトパッケージ(無名パッケージ)はあるの?
Java では package 宣言を省略すると、
ソースコードはデフォルトパッケージ(無名パッケージ)に
所属しているという扱いになりますが
Go の場合はどうでしょうか?
ためしに package 宣言を削除してみました。
import "fmt"
func main() {
fmt.Println("文字出力")
}
実行したらおこられました。
どうやら package 宣言は省略できないようです。
ということは、Java でいうところの
「デフォルトパッケージ(無名パッケージ)」
は Go では無いってことなんでしょうね。
まあ、Java でも実務において
デフォルトパッケージ(無名パッケージ)
使うことは今までの経験上無かったので
Java でも package 宣言省略できないようにしてもいいかもですね。
次回も引き続きパッケージまわりを見ていきます。