条件分岐
プログラミング基本からGoの理解を文字におこして行こうと思います!
Go言語の基本❶はこちら
Go言語の基本❷はこちら
条件分岐とは
ある条件に当てはまるかどうかによって処理を分ける
例えば、明日の天気(条件)によって傘を持っていくか(処理)を変える
if文
package main
func main(){
score := 100
if score > 60 {
println("合格") //条件が成り立つ時の処理
}
}
//コンソール
合格
if文を用いると「もし○○ならば☓☓を行う」という条件分岐が可能
if文の条件式
package main
func main(){
score := 100
if score >= 60 {
println("合格") //scoreが60より大きい時、もしくは等しい時に成り立つ
}
}
//コンソール
合格
if文は、if 条件式 { 処理 } というように記述
真偽値
package main
func main(){
score := 70
println(score>60)
println(score>80)
}
//コンソール
true
false
「真偽値型」には「true」と「false」という2つの値が存在
比較演算子を用いた条件式は、成り立つときは「true」
成り立たないときは「false」という値
比較演算子
package main
func main(){
score := 100
if score == 100 { //scoreが100の時true
}
}
x == y 左右の値が等しい時 true
x != y 左右の値が等しくない時 true
比較演算子→等しいか調べる
代表的な比較演算子
//等しいか調べる
x == y 左右の値が等しい時 true
x != y 左右の値が等しくない時 true
//大小を比べる
x < y 右辺の方が大きい時 true
x > y 右辺の方が小さい時 true
x =< y 右辺の方が大きい、等しい時 true
x >= y 右辺の方が小さい、等しい時 true
else(条件に一致しない場合の処理)
package main
func main(){
score := 50
if score > 80 {
println("合格")
} else {
println("失格") //条件式の結果がfalseの時に実行
}
}
//コンソール
失格
if文に「else」を組み合わせることで
「もし○○ならば●●を行う、そうでなければ▲▲を行う」という条件分岐ができる
else if(条件に一致しない場合、さらに条件分岐したい場合)
package main
func main(){
score := 50
if score == 100 {
println("卒業")
} else if score >= 60 {
println("合格")
} else {
println("追試")
}
}
//コンソール
追試
else ifを用いると
「もし○○ならば●●を行う、△△ならば▲▲を行う、
どちらでもなければ□□を行う」という処理ができる
else if(2)
package main
func main(){
score := 100
if score == 100 {
println("卒業") //以降の処理は実行されない
} else if score >= 60 {
println("合格")
} else {
println("追試")
}
}
//コンソール
卒業
「else if」はいくつでもつなげて書くことができる
上から順に条件が成り立つか判断され
最初に条件に合致した部分の処理だけが行われる
else if(2)
package main
func main(){
score := 100
if score == 100 {
println("卒業") //以降の処理は実行されない
} else if score >= 60 {
println("合格")
} else {
println("追試")
}
}
//コンソール
卒業
かつ(&&)
package main
func main(){
time := 12
if time > 10 && time < 19 {
println("仕事開始")
}
}
&&を用いて複数の条件式を組み合わせると
全ての条件式がtrueの場合のみ全体としてtrueになる
//論理演算子
true && true true
true && false false
false && true false
false && false false
または(||)
package main
func main(){
time := 15
if time == 10 || time == 15 {
println("おやつタイム")
}
}
||を用いて複数の条件式を組み合わせると
複数の条件式のうち1つでもtrueであれば全体がtrueになる
//論理演算子
true || true true
true || false true
false || true true
false || false false
否定(!)
package main
func main(){
time := 15
if !(time == 16) {
println("おやつタイムではない")
}
}
!(条件式)とすると
条件式が「true」であれば「false」に、「false」であれば「true」
switch文
swich 条件の値 {
case 値1:
//処理
case 値2:
//処理
case 値2:
//処理
}
条件分岐にはif文のほかに、switch文という構文もある
条件の値がcaseの値と一致するとき、処理が実行
caseの後ろのコロン(:)などは忘れがちなので注意
if文とswitch文
//if文
x := 8
if x % 2 == 0 {
println("偶数です")
} else if x % 2 == 1 {
println("奇数です")
}
//switch文
x := 8
switch x % 2 {
case 0: //一致
println("偶数") //実行
case 1:
println("奇数")
}
switch文は「とある値(今回はx % 2)が何であるか」で処理を分けたいとき
(特にその分岐が多いとき)、if文よりシンプルに書ける場合がある
複数の値を指定する
//if文
year := 1994
if year == 1994 || year == 2005 { //1994がtrue
println("私が産まれた年")
}else if year == 2000 {
println("弟が産まれた年")
}
//switch文
year := 1994
switch year {
case 1994,2005: //1994に一致
println("私が産まれた年") //実行
case 2000:
println("弟が産まれた年")
}
caseのあとの値は、コンマ(,)を用いて複数指定することができる
コンマで複数の値を指定すると
switchの値がいずれかに一致すれば、そのcaseの処理が実行
default
//if文
if rank == 1 {
println("優勝")
} else if rank == 2 {
println("準優勝")
} else if rank == 3 {
println("3位")
} else {
println("最下位")
}
//switch文
switch rank {
case 1:
println("優勝")
case 2:
println("準優勝")
case 3:
println("3位")
default:
println("最下位")
どのcaseとも一致しなかったときに実行する処理を、defaultに指定できる
if文のelseに似ている