パッケージ(Go言語)
今回は,Goのパッケージについてです.パッケージを理解すると,Goマスターへグッと近づきます!
Go言語はパッケージという単位で,複数のソースコードを管理します.
今回は,簡単な自作パッケージを作って,自作パッケージ内の関数をmainパッケージから呼び出します!
それでは~,Go!
説明用のコード全文
今回の説明用のコードは,3つのファイルに分けております.
フォルダ構成は,
./ --- main.go
|- subMain.go
|--- src/ --- myPack/ --- myPack.go
こんな感じです.カレントフォルダに,main.goとsubMain.goがいます.
これらのファイルは,mainパッケージに属しております.
そして,./src/myPack/の直下にmyPack.goがいます.
このファイルは,myPackパッケージに属しております.
何となく,お気づきの方もいらっしゃると思いますが,Goでは,
一つのフォルダ内は,一つのパッケージに属するファイル群で構成する必要があります!
ですので,一つのフォルダ内に複数のパッケージを含むことはできません!
以下が,ソースコードの全文となります!
main.go (package : main)
package main //このファイルは「main」パッケージですよ!と宣言
import (
"myPack" //自作パッケージ
)
func main() {
// mainパッケージ内の関数呼び出し(subMain.go)
subMain()
// 以下,自作パッケージ内の関数呼び出し
myPack.MyFunc() // 呼び出し方:パッケージ名.パッケージ内の関数
}
subMain.go (package : main)
package main
import "fmt"
func subMain() {
fmt.Println("...subMain() called")
}
myPack.go (package : myPack)
package myPack
import (
"fmt"
)
func MyFunc() { /* 外部のパッケージから呼び出すには,関数名の一文字目は大文字! */
fmt.Println("...MyFunc() called")
}
解説
package main //このファイルは「main」パッケージですよ!と宣言
import (
"myPack" //自作パッケージ
)
func main() {
// mainパッケージ内の関数呼び出し(subMain.go)
subMain()
// 以下,自作パッケージ内の関数呼び出し
myPack.MyFunc() // 呼び出し方:パッケージ名.パッケージ内の関数
}
subMain.go (package : main)
main.goは「package main」とあるように,mainパッケージに属しております.
そして,subMain関数とMyFunc関数を呼び出しております.
subMain関数は,同じmainパッケージのsubMain.goで
package main
import "fmt"
func subMain() {
fmt.Println("...subMain() called")
}
このように定義されております.
同じパッケージの中からなら,関数を呼び出す場合は特別な宣言は不要です!
C言語みたいに,extern ... は不要なんですねぇー(*´ω`*)
MyFunc関数は,別パッケージのmyPackパッケージで
package myPack
import (
"fmt"
)
func MyFunc() { /* 外部のパッケージから呼び出すには,関数名の一文字目は大文字! */
fmt.Println("...MyFunc() called")
}
このように定義されております.
異なるパッケージから,関数を呼び出すには,
// 以下,自作パッケージ内の関数呼び出し
myPack.MyFunc() // 呼び出し方:パッケージ名.パッケージ内の関数
このように,
パッケージ名.関数名()
と書く必要がります!!
そして,気を付けなければいけないのは,
別パッケージから関数を呼び出すためには,その呼び出す関数名の一文字目は,大文字である必要があります!
なんと!( ゚Д゚)って感じですよね!
つまり,上記のMyFunc関数の名前が「myFunc」であれば,mainパッケージから呼び出すことはできません!
パッケージ外部に関数を公開するには,関数名の一文字目を大文字にしましょう!
VScodeで動かしてみる!
F5でデバッグ!!
うっぷす!「デバッグコンソール」に「myPackパッケージが見つからん!」って怒られましたね!
ダイアログの「launch.jsonを開く」を押下すると,
こんな感じで,launch.jsonが開きます.ここで,「env」に
GOPATHの設定を追加します!そして,main.goを開いて,再度,「F5(デバッグ)」を押下すると,
じゃじゃーん('ω')
プログラムの実行完了!(ちゃっかり,ブレックポイント貼ってますw)
GOPATHとは?
GOPATHに関しては,下記サイトを参照してください.
https://golang.org/doc/gopath_code.html
英語ですけどねw 学生さんとかは,ぜひ,上記のURLの一読を勧めます.英語の勉強にもなりますしね!
サポートお願いいたします.主に初心者から中級向けに,ソフトウェア開発に関する知識を提供していきます.