Go言語学習4日目:復習&練習問題にチャレンジしてみた(Go Tour活用)

Go言語学習もついに4日目

今日は新しい概念に進むのではなく、これまでに学んだことの復習デーです。
参考にしているのはもちろん、Go Tour

go.dev

日本語版 go-tour-jp.appspot.com

  • 関数
  • 条件分岐(if/else, switch)
  • ループ(for)
  • スライスやマップ、構造体(struct)など

これらをしっかり身につけるために、簡単な練習問題にチャレンジしてみました!

kunio-ud-all.com

kunio-ud-all.com

kunio-ud-all.com


練習①:スライスの合計を計算する関数を作ってみた

func sum(numbers []int) int {
    total := 0
    for _, n := range numbers {
        total += n
    }
    return total
}

func main() {
    nums := []int{1, 2, 3, 4, 5}
    result := sum(nums)
    fmt.Println("合計:", result) // 合計: 15
}


  • スライスの要素を range でループ処理
  • total += n で合計を蓄積
  • 「値の蓄積」パターンは関数化しておくと再利用しやすい!
  • 文系SEでも、このへんは「ExcelのSUM関数を手動でやってる感覚」で理解しやすいかも。。


    練習②:3の倍数かどうかをチェックする関数

    func checkMultiple(n int) string {
        if n%3 == 0 {
            return fmt.Sprintf("%d は 3 の倍数です", n)
        } else {
            return fmt.Sprintf("%d は 3 の倍数ではありません", n)
        }
    }
    
    func main() {
        fmt.Println(checkMultiple(9))  // 3の倍数
        fmt.Println(checkMultiple(10)) // そうでない
    }
    

    こういう「条件分岐で処理を切り分けるパターン」は実務まぁ使いますよね。。 最初は if が複雑に見えるけど、実際に書いてみると案外スッと理解できます。 if だらけになったり、、、ゲーム系のプログラムはifだらけのイメージ。。。


    練習③:1からnまでの合計を返す関数(for文の復習)

    func calcSum(n int) int {
        total := 0
        for i := 1; i <= n; i++ {
            total += i
        }
        return total
    }
    
    func main() {
        fmt.Println(calcSum(10)) // 出力: 55
    }
    


  • 初期値、条件、更新式:for i := 1; i <= n; i++
  • Goでは while がない → すべて for で表現できる

  • 練習④:Mapの中身をすべて表示してみる

    func printAges() {
        ages := map[string]int{
            "たろう": 30,
            "はなこ": 25,
            "じろう": 28,
        }
    
        for name, age := range ages {
            fmt.Printf("%s さんは %d 歳です\n", name, age)
        }
    }
    
    func main() {
        printAges()
    }
    

    Mapとrangeの組み合わせもバッチリですね!
    キーと値の両方を取り出せるのが嬉しい。。


    今日のまとめ

    Go言語4日目の復習ポイント
  • スライスの合計を求める関数のパターン
  • 条件分岐(if)で処理を変えるロジックに慣れる
  • forループで繰り返し処理を実装できるようになる
  • mapを range で回して情報を取り出す方法
  • まだまだ、慣れないです。。


    (この記事は以下、広告を含みます)