見出し画像

パッケージ(Go言語)

今回は,Goのパッケージについてです.パッケージを理解すると,Goマスターへグッと近づきます!

Go言語はパッケージという単位で,複数のソースコードを管理します.

今回は,簡単な自作パッケージを作って,自作パッケージ内の関数をmainパッケージから呼び出します!

それでは~,Go!

説明用のコード全文

今回の説明用のコードは,3つのファイルに分けております.

フォルダ構成は,

./ --- main.go
     |- subMain.go
     |--- src/ --- myPack/ --- myPack.go 

こんな感じです.カレントフォルダに,main.gosubMain.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でデバッグ!!

画像1

うっぷす!「デバッグコンソール」に「myPackパッケージが見つからん!」って怒られましたね!

ダイアログの「launch.jsonを開く」を押下すると,

画像2

こんな感じで,launch.jsonが開きます.ここで,「env」に

画像3

GOPATHの設定を追加します!そして,main.goを開いて,再度,「F5(デバッグ)」を押下すると,

画像4

じゃじゃーん('ω')
プログラムの実行完了!(ちゃっかり,ブレックポイント貼ってますw)

GOPATHとは?

GOPATHに関しては,下記サイトを参照してください.

https://golang.org/doc/gopath_code.html

英語ですけどねw 学生さんとかは,ぜひ,上記のURLの一読を勧めます.英語の勉強にもなりますしね!

ここから先は

876字
500円で,本マガジンのすべてを読むことができます.プログラム初心者でもGO言語を習得できるように丁寧な説明を心がけています.もちろん,購読できない方にも,Goの魅力を伝えていきます!

基本的にGoの公式サイトをわかり易く解説していきます.本マガジンは500円です.購入すれば,本マガジン内の全記事がストレスなく読めます!

期間限定 PayPay支払いすると抽選でお得に!

サポートお願いいたします.主に初心者から中級向けに,ソフトウェア開発に関する知識を提供していきます.