if文は正しいか正しくないかという判定によく使う制御構文である。
例えば、変数iが5ならば、「iに格納されている文字は5」と表示してみる。
package main import "fmt" func main() { var i int i = 5 if i == 5 { fmt.Println("iに格納されている文字は5") } }
if i == 5でiという値が、5であればを意味し、5であれば{}の中身を実行するという意味になる。
※fmt.Printlnというフォーマットの標準出力を使うことになったので、package main とfunc mainの間にimport "fmt"が実行した後に、自動的に挿入される。
※ちなみにiの中が5でない場合は、何も表示されない。
strに入っている文字がtestならば、「strに格納されている値はtest」という文を表記してみる場合は、
package main import "fmt" func main() { var str string str = "test" if str == "test" { fmt.Println("strに格納されている値はtest") } }
今回は文字なので、var str stringと文字の値stringを定義しておくことと、str = "test"で””を入れることに注意する。
ifの横にあるstr == "test"は左の値と右の値が一致しているか調べる。試しにstrにhogeを代入すると、何も表示されない。
package main
import "fmt"
package main import "fmt" func main() { var str string str = "hoge" if str == "test" { fmt.Println("strに格納されている値はtest") } }
ここで、strに入っている文字がtestならば、「strに格納されている値はtest」を表示し、testでなければ、「strに格納されている値はtestではありません」と表示させたい場合は、下記のように記載する。
package main import "fmt" func main() { var str string str = "hoge" if str == "test" { fmt.Println("strに格納されている文字はtest") } if str != "test" { fmt.Println("strに格納されている値はtestではありません") } }
if str!= "test"の!=は左の値と右の値が一致していなければ正しいとする。後は、fmt.Printlnの()内の表示を「strに格納されている値はtestではありません」に変更した。
※!=は!と=の間にスペースを入れないこと。
上記の場合、ifを2回記載することになる。elseを使って、省略できる記載方法がある。
package main
import "fmt"
func main() {
var str string
str = "hoge"
if str == "test" {
fmt.Println("strに格納されている文字はtest")
} else {
fmt.Println("strに格納されている値はtestではありません")
}
}
if str != "test"を } else { に変更した。これは、strに入っている文字がtest以外なら全てという意味になる。
今度は、strに入っている文字をdogにし、「strに格納されている値はtestもhogeでもありません」と表示したい場合は、下記のように記載する。
package main import "fmt" func main() { var str string str = "dog" if str == "test" { fmt.Println("strに格納されている文字はtest") } else if str == "hoge" { fmt.Println("strに格納されている値はhoge") } else { fmt.Println("strに格納されている値はhogeでもtestでもありません") } }
ここでは、もう一つのhogeの場合を else ifで追加し、再度elseを最後の関数fmt.Printlnの前に追加記載した。
最後に練習で偶数か奇数かを判定する関数を自作パッケージの中に作ってみる(偶数であれば、true、奇数であればfalse)。
package ryoko //trueだったら偶数、奇数だったらfalse func JudgeEo(i int) bool { var res bool if i%2 == 0 { res = true } else { res = false } return res }