最近、個人的な趣味で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関数が終わる直前に出力される。