Goで自作のコードを外部ファイルとして読み込み、使用する
開発環境は、Windows10 Professional(64bit) + Go go1.15.3 windows/amd64。
Goで、コードを分割して、外部ファイルとして読み込む場合は、パッケージを作って、そこから、読み込む形にするようです。
1.以下のコマンドを入力して、Cドライブ直下でgosampleディレクトリを作成し、カレントディレクトリにする
mkdir gosample && cd gosample
2.以下のコマンドを入力して、go.modを作成する
go mod init
3.サンプルとして、粗雑ですが、以下のコードを作成し、main.goという名前で保存し、実行します。
package main import "fmt" const TAX = 1.10 type Person struct{ Name string Age int } func Add(a int, b int) int{ return a + b } func main(){ p1 := Person{Name: "Go太郎", Age: 10} fmt.Println(p1.Name, p1.Age) fmt.Println(Add(3,5)) fmt.Println(TAX) }
go run main.go
実行結果
今度は、これをバラバラにして、外部パッケージとして読み込みます。
ディレクトリ構成としては以下の様になります。
gosample ┗main.go ┗mypkg ┗func.go ┗struct.go ┗const.go
4.以下のコマンドを入力して、カレントディレクトリに、mypkgディレクトリを作成します。
mkdir mypkg
5.mypkg以下に、3つのファイルを作成します。外部から、読み込む場合、定数名、関数名、構造体名、構造体のメンバ名などの頭文字は大文字しなければいけません。
以下のコードを、struct.goという名前で保存
package mypkg type Person struct{ Name string Age int }
以下のコードを、const.goという名前で保存
package mypkg const TAX = 1.10
以下のコードを、func.goという名前で保存
package mypkg func Add(a int, b int) int{ return a + b }
6. main.goを以下のように書き換えて、実行します
package main import( "gosample/mypkg" "fmt" ) func main(){ p1 := mypkg.Person{Name: "Go太郎", Age: 10} fmt.Println(p1.Name, p1.Age) fmt.Println(mypkg.Add(3,5)) fmt.Println(mypkg.TAX) }
go run main.go
実行結果
ファイルを分割しても、同じ結果が表示されました。
一応、mypkgディレクトリ内の、関数がある、func.goのテストコードを書いておきます。
7.以下のコードをmypkgディレクトリ内に、func_test.goという名前で保存します
package mypkg import "testing" func TestAdd(t *testing.T){ if Add(5, 5) != 10{ t.Fatal("failed test") } }
8.カレントディレクトリを、mypkgにして、以下のコマンドを入力して、テスト開始。
go test
実行結果
9.最後にGitHubに今回のコードをアップしておきます
Git Bashを開いて、以下のコマンドを一行ずつ入力します。
cd c:\gosample git init . git add -A git commit -m "first commit" git branch -M main git remote add origin https://github.com/koidekenta/gosample1.git git push -u origin main
pushしたURLが以下になります。
github.com