演習1-2
演習1-1の関数SayHelloを,switch文を使って書き直せ.
解答例
解答例
- package main
- import "fmt"
- func SayHello(lang int) (s string) {
- switch lang {
- case 0:
- s = "Hello, World!"
- case 1:
- s = "こんにちは世界。"
- case 2:
- s = "Bonan tagon"
- default:
- s = "何語で言えばいいの?"
- }
- return
- }
- func main() {
- fmt.Printf(SayHello(0)+"\n")
- fmt.Printf(SayHello(1)+"\n")
- fmt.Printf(SayHello(2)+"\n")
- fmt.Printf(SayHello(100)+"\n")
- }
解説
解説
5行目~14行目
- Go言語のswitch文には式switchと型switchの2種類があります.ここでは,式switchを使っています.
- 式switchでは,switchの式が評価されたあと,case式が評価され,switch式と等しい最初のcaseが見つかるとその文が実行されます.
- そのとき,それ以外のcaseはスキップされます.C言語と異なり,それより下のcase式は評価されません.
- 一致するcaseがないときにdefaultケースがあれば,その文が実行されます.
- switch文の詳細は言語仕様を参照してください.
- switchの式にtrueと書くと(または式を省略すると)case式だけが評価され,case式がtrueとなる最初の文が実行されます.したがって,解答例(2)のように書いても同じ結果を得ることができます.
解答例(2)
解答例(2)
- package main
- import "fmt"
- func SayHello(lang int) (s string) {
- switch {
- case lang == 0:
- s = "Hello, World!"
- case lang == 1:
- s = "こんにちは世界。"
- case lang == 2:
- s = "Bonan tagon"
- default:
- s = "何語で言えばいいの?"
- }
- return
- }
- func main() {
- fmt.Printf(SayHello(0)+"\n")
- fmt.Printf(SayHello(1)+"\n")
- fmt.Printf(SayHello(2)+"\n")
- fmt.Printf(SayHello(100)+"\n")
- }