1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのGo言語(4. 条件分岐と繰り返し)

Last updated at Posted at 2025-07-05

はじめに

先日にアップしたはじめてのGo言語(3. 配列とスライス、マップ)に続いて、Go言語の基礎を学んだ記録を記事としてまとめてみました。

実行環境

WSL2(Ubuntu 22.04.3 LTS)

条件分岐

  • 前回の配列/スライス/マップはやや癖がありましたが、条件分岐の書き方はかなり他の言語に近いと感じました。
    • else ifではなく、Rubyのelsifのように妙な書き方かと思ってドキドキしました💦
if.go
package main

import "fmt"

func main() {
    var i int = 123

    if i < 0 {
        fmt.Printf("%dは負の数です。\n", i)
    } else if i > 0 {
        fmt.Printf("%dは正の数です。\n", i)
    } else {
        fmt.Printf("%dはゼロです。\n", i)
    }
}
実行結果
# go run if.go
123は正の数です。
  • 文字列の値の比較については、数値の比較と同様に「==」が使えます。
    • Javaだと文字列の比較には「==」が使えず、文字列.equals(比較対象の文字列)などメソッドを使って比較するので、混同しないように注意が必要だと感じました。
if2.go
package main

import "fmt"

func main() {
    var animal string = "cat"

    if animal == "dog" {
        fmt.Println("ワン")
    } else if animal == "cat" {
        fmt.Println("ニャー")
    }
}
実行結果
# go run if2.go
ニャー

繰り返し

  • if文と同様にfor文の構文も癖が感じられず、覚えやすいと感じました。
  • ただし、カウンタ変数をvar i = 0;var i int = 0と書くと、syntax error: var declaration not allowed in for initializerというエラーになってしまいます。
    • そのため、ここでは型推論を使ってi:=0と書いています。
for.go
package main

import "fmt"

func main() {
    var colors = [3] string {"Red", "Green", "Blue"}

    for i:=0; i<len(colors); i++ {
        fmt.Printf("%d番目の要素: %s\n", i, colors[i])
    }
}
実行結果
# go run for.go
0番目の要素: Red
1番目の要素: Green
2番目の要素: Blue
  • for文の条件を無くすと無限ループになります。
    • ループを抜けるbreak、次のループへ進むcontinueは他の言語と同じです。
for2.go
package main

import "fmt"

func main() {
    var i int = 0

    for {
        i++
        if i%2 == 0 {
            fmt.Printf("%dは偶数です\n", i)
        } else {
            fmt.Printf("%dは奇数です\n", i)
        }

        if i == 10 {
            break
        }
    }
}
実行結果
# go run for2.go
1は奇数です
2は偶数です
3は奇数です
4は偶数です
5は奇数です
6は偶数です
7は奇数です
8は偶数です
9は奇数です
10は偶数です
  • 配列やスライスなど反復可能なものについては、for文ではなくrangeを使ってループ処理を実現できます。
  • このrangeを使った書き方がかなり独特で癖が強いので、個人的には他の言語のforeachのようなシンプルかつfor文に近い構文の方が良かったですね...
for3.go
package main

import "fmt"

func main() {
    var colors = [3] string {"Red", "Green", "Blue"}

    for i, color := range colors {
        fmt.Printf("%d番目の要素: %s\n", i, color)
    }
}
実行結果
# go run for3.go
0番目の要素: Red
1番目の要素: Green
2番目の要素: Blue

まとめ

  • if文とfor文は他の言語に近い構文で、Javaなどに慣れている人でも覚えやすいと感じました。
  • 一方でrangeはかなり独特な構文なので、慣れるまではパッと書けない気がしました...

参考URL

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?