何かやってみるブログ

興味をもったことに関して書いています。技術系の記事が多いです。

Goの文法まとめ(if文、for文、range、switch文、deferなど)

最近、個人的な趣味でGoを勉強しているのでメモ代わりに残します.

if 文

func fizzbuzz(num int) string {
    if num%5 == 0 && num%3 == 0 {
        return "fizzbuzz"
    } else if num%5 == 0 {
        return "buzz"
    } else if num%3 == 0 {
        return "fizz"
    } else {
        return strconv.Itoa(num)
    }
}

https://go-tour-jp.appspot.com/flowcontrol/5

for文

package main

import (
    "fmt"
    "strconv"
)

func fizzbuzz(num int) string {
    if num%5 == 0 && num%3 == 0 {
        return "fizzbuzz"
    } else if num%5 == 0 {
        return "buzz"
    } else if num%3 == 0 {
        return "fizz"
    } else {
        return strconv.Itoa(num)
    }
}

func main() {
    for i := 1; i <= 15; i++ {
        fmt.Println(fizzbuzz(i))
    }
}

S// => 
// 1
// 2
// fizz
// 4
// buzz
// fizz
// 7
// 8
// fizz
// buzz
// 11
// fizz
// 13
// 14
// fizzbuzz

https://go-tour-jp.appspot.com/flowcontrol/1

range

package main

import (
    "fmt"
    "strconv"
)

func fizzbuzz(num int) string {
    if num%5 == 0 && num%3 == 0 {
        return "fizzbuzz"
    } else if num%5 == 0 {
        return "buzz"
    } else if num%3 == 0 {
        return "fizz"
    } else {
        return strconv.Itoa(num)
    }
}

func main() {
    nums := []int{1, 2, 3, 5, 6, 7, 8, 9, 15}
    for _, num := range nums {
        fmt.Println(fizzbuzz(num))
    }
}

最初はインデックス番号が入るが、今回のように使わない場合は _ を使う。

https://go-tour-jp.appspot.com/moretypes/16

Switch文

func fizzbuzz(num int) string {
    switch {
    case num%15 == 0:
        return "fizzbuzz"
    case num%5 == 0:
        return "buzz"
    case num%3 == 0:
        return "fizz"
    default:
        return strconv.Itoa(num)
    }
}

https://go-tour-jp.appspot.com/flowcontrol/9

defer

func main() {
    defer fmt.Println("終わり!!")
    nums := []int{1, 2, 3, 5, 6, 7, 8, 9, 15}
    for _, num := range nums {
        fmt.Println(fizzbuzz(num))
    }
}

// =>
// 1
// 2
// fizz
// buzz
// fizz
// 7
// 8
// fizz
// fizzbuzz
// 終わり!!

main関数が終わる直前に出力される。

https://go-tour-jp.appspot.com/flowcontrol/12