今回は、Goソースの実行とビルドについて。
◆ Goソースの作成
各四則演算の関数を calcパッケージとして作成してみます。
[calc\add.go]
package calc
func Add(a int, b int) int {
return a + b
}
[calc\substract.go]
package calc
func Subtract(a int, b int) int {
return a - b
}
[calc\multiply.go]
package calc
func Multiply(a int, b int) int {
return a * b
}
[calc\devide.go]
package calc
func Divide(a int, b int) int {
return a / b
}
func Reminder(a int, b int) int {
return a % b
}
ファイルとディレクトリの構成はこんな感じ。
PS C:\study\go\test1> tree /F
C:.
│ go.mod
│
├─calc //追加
│ add.go //追加
│ divide.go //追加
│ multiply.go //追加
│ subtract.go //追加
│
├─main
│ │ hello.go
│ │ main.go
│ │ test1.exe
│ │
│ └─print
│ outmessage.go
│
└─out
outmessage.go
そして、main.goを以下のように修正。
package main
import (
"test1/main/print"
"test1/out"
"test1/calc" //追加
"fmt"
)
func main() {
print_hello()
print.Printmessage()
out.OutGoodNight()
a := calc.Add(10,3) //追加
b := calc.Subtract(10,3) //追加
c := calc.Multiply(10,3) //追加
d := calc.Divide(10,3) //追加
e := calc.Reminder(10,3) //追加
fmt.Print(a, b, c, d, e) //追加
}
これで実行してみると…
![](https://cdn-ak.f.st-hatena.com/images/fotolife/c/coublood/20240408/20240408230823.png)
左から「和・差・積・商・余り」なので
「13 7 30 3 1」となり、正しく計算されていることが分かります。
◆ Goテストソースの作成
テストソースは「*_test.go」という名前で作るのが規則のようです。
今回は、calcパッケージのテストコードを作成。
[calc\calc_test.go]
package calc
import "testing"
func TestAdd(t *testing.T) {
expect := 13
actual := Add(10, 3)
if expect != actual {
t.Errorf("%d != %d", expect, actual)
}
}
func TestSubtract(t *testing.T) {
expect := 7
actual := Subtract(10, 3)
if expect != actual {
t.Errorf("%d != %d", expect, actual)
}
}
func TestMultiply(t *testing.T) {
expect := 30
actual := Multiply(10, 3)
if expect != actual {
t.Errorf("%d != %d", expect, actual)
}
}
func TestDivide(t *testing.T) {
expect := 3
actual := Divide(10, 3)
if expect != actual {
t.Errorf("%d != %d", expect, actual)
}
}
func TestReminder(t *testing.T) {
expect := 1
actual := Reminder(10, 3)
if expect != actual {
t.Errorf("%d != %d", expect, actual)
}
}
あとはこれを実行してみればよいようです。
「go test」コマンドを実行してみると…
![](https://cdn-ak.f.st-hatena.com/images/fotolife/c/coublood/20240408/20240408232842.png)
テストでもエラーになっておらず、問題ないようです。
ちなみに、わざと足し算のテストでエラーになるようにテストコードを書き換えて実行してみると…
![](https://cdn-ak.f.st-hatena.com/images/fotolife/c/coublood/20240408/20240408233034.png)
ちゃんとFAILになっていますね。どのテストでエラーになっているかもわかるので、チェックも簡単です。
VSCode上であれば、テスト単位に実行も可能なので、こちらもやりやすいですね。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/c/coublood/20240408/20240408233248.png)