制御構文¶
はじめに¶
本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。
01. 制御文¶
初期化ステートメント¶
以下の 2 つの実装例は同じである。
package main
import (
"log"
)
func main() {
// 数値を取得する
value := getNum()
// 通常の記法
if value > 20 {
log.Printf("%v: 20より大きいです\n", value)
}
log.Printf("%v: 20より小さいです\n", value)
}
初期化ステートメントでは、条件に処理の結果を使用できる。
なお、処理の結果自体は条件内でしか使用できない。
package main
import (
"log"
)
func main() {
// 簡易記法
if value := getNum(); value > 20 {
// value変数は条件内でしか使用できない
log.Printf("%v: 20より大きいです\n", value)
}
log.Printf("%v: 20より小さいです\n", value)
}
func getNum() int {
return 20
}
if-else-if の代替¶
▼ if の連続¶
Go には if-else-if があるが、可読性が低い場合は代わりに if を連続させる。
事前に var で変数を宣言し、各 if 内で変数に値を格納する。
package main
import (
"fmt"
)
func getFooX() string {
return "FooX"
}
func getFooY() string {
return "FooY"
}
func getFooZ() string {
return "FooZ"
}
func main() {
var foo string
isX, isY, isZ := true, false, false
if isX {
foo = getFooX()
}
if isY {
foo = getFooY()
}
if isZ {
foo = getFooZ()
}
fmt.Print(foo)
}
▼ switch-case¶
Go には if-else-if があるが、可読性が低い場合は代わりに switch-case を使用する。
事前に var で変数を宣言し、各 switch-case 内で変数に値を格納する。
package main
import (
"fmt"
)
func getFooX() string {
return "FooX"
}
func getFooY() string {
return "FooY"
}
func getFooZ() string {
return "FooZ"
}
func main() {
var foo string
isX, isY, isZ := true, false, false
switch {
case isX:
foo = getFooX()
case isY:
foo = getFooY()
case isZ:
foo = getFooZ()
}
fmt.Print(foo)
}
配列または slice の走査¶
▼ for ... range¶
配列または slice を走査する。
PHP の foreach に相当する。
package main
import "fmt"
func main() {
slice := []string{"a", "b", "c"}
for key, value := range slice {
fmt.Println(key, value)
}
}
// 0 a
// 1 b
// 2 c