エンジニア採用担当がプログラミング頑張る話【13日目/2ヶ月間】
こんにちは、@hiroki_maekawaです。
今日は、昨日課題として頂いたテストから書いていきたいと思います。
func Add(a, b int) int { return a + b}
ただ、「returnってなんだっけ、、Add関数ってどうやって使うんだっけ、、」という疑問から出てきてので、まだまだプログラミングの基礎について理解していないな。。と悟ったので、まずはドットインストールで変数の宣言・代入の仕方や、関数についての基礎を復習しました。
今日の目標
・Go言語の基礎を確認する
・簡単なGoのテストを自力で書く
1. Go言語の基礎を確認する
ドットインストールの講座で復習した後、Add関数について自分で実行することができるようになりました。
package main
import (
"fmt"
)
func Add(a, b int) int {
return a + b
}
func main() {
fmt.Println(Add(3, 5))
}
この講座、3日前にも受講していたんですが、今回復習してみて学んだこと(納得したこと)は、
・コードは、まず①どれが変数の宣言、代入で、②どれがその変数に入れる引数で、③どれが返り値なのか意識して読むと頭の中で整理がつきやすい。
・上の③つの表現方法は何パターンかあるので(宣言と代入を一気に行う場合とそうでない場合、複数の返り値を返したい場合、変数に関数を代入する場合、などなど)、これは数をこなして慣れていく。
2. 簡単なテストを自力で書く
その後、昨日調べた方法を参考に別にファイルを作って、自分なりにテストも書いてみて、
package main
import (
"testing"
)
func TestAdd(t *testing.T) {
if 8 != Add(3, 5) {
t.Fatal("failed test")
}
}
下記コマンドを打って実行してみましたが、、
$ go test //ログを出さない場合
$ go test -v //ログを出す場合
きましたエラー。
(base) HirokinoMacBook:hiromae_week_2 hirokimaekawa$ go test -v# _/Users/hirokimaekawa/season-three/hiromae_week_2
main_test.go:12:2: expected '}', found 'EOF'
FAIL _/Users/hirokimaekawa/season-three/hiromae_week_2 [setup failed]
expected found 'EOF' でググってみても、それらしき解決策が出てこなかったので@Sueken51さんに質問してみたのですが、これで動きそうということでした。
その後「golangにはテストのやり方の推奨がある」と教えて頂き、下記サイトを読むことにしました。
分かったことは
・Goのテストを書く時は、Table Driven Testが推奨されている。(読みやすくするため)
・エラーメッセージを出す時は t.Errorf で、テストコードを読まなくてもどこのテストがだめだったかなどの詳細が理解できるように書く。
それで自分なりに書いてみました。
package main
import (
"testing"
)
func TestAdd(t *testing.T) {
result := 8
expected := Add(3, 5)
if result != expected {
t.Errorf("failed test:result was %s, but expected %s\n", result, expected)
}
}
またその後、@Sueken51さんに質問して分かったことは、
・下記のように、テスト内容を配列にして、それをfor文でテストする。
ただ、このコードに理解できない部分(structってtype書かなくても使えるの?見た目配列なのにstructってことは構造体?{name string}の意味は?などなど)があったため、明日ひとつひとつ調べながら確認していきたいと思います。
できるようになったこと
・簡単なGoのテストを書く
さいごに
3日前と今日、同じオンライン講座を見たのに捉え方が全く違うことに驚きました。色んな意味で。。ただ、「理解度が上がっているんだ」とも感じることができたので嬉しかったです!ちょくちょく基本に立ち返ると、を新たな学びや発見があるんだなぁと思いました。
それではまた!