Goのswitch
break を書かなくてよい
Go
switch status {
case 0:
return "下書き"
case 1:
return "販売中"
case 2:
return "売切れ"
}他の言語の switch は、case の最後に break を書かないと次の case に落ちてしまいます。書き忘れが定番のバグでした。
Go は逆にしています。当たった case を実行したら、そこで抜けます。break は要りません。
default
どの case にも当たらなかったときは default です。
Go
switch status {
case 0:
return "下書き"
default:
return "不明"
}複数の値をまとめる
カンマで並べると、1つの case にまとめられます。
Go
switch status {
case 0, 3:
return "未公開"
case 1:
return "販売中"
}他の言語で case 0: と case 3: を続けて書いていたのが、この形になります。
条件を書く switch
Go の switch には、値ではなく条件を並べる書き方があります。
Go
switch {
case price < 1000:
return "お手頃"
case price < 10000:
return "標準"
default:
return "高額"
}switch の後ろに何も書かず、case に条件を並べます。上から順に見て、最初に真になったものを実行します。
前のレッスンで if と else if を並べた価格帯の判定は、この形で書き直せます。縦に揃うぶん、条件が3つ以上あるときはこちらのほうが読みやすくなります。
どちらを使うか
1つの値を何かと比べる switch status {
条件が3つ以上並ぶ switch {
条件が1つか2つ if で足りる迷ったら if から書き始めて、3つ目が出てきた時点で switch に直す、という順番で構いません。
用意された関数を呼ぶ
関数は、値を受け取って結果を返す処理です。ひな形に用意された関数は、名前と括弧を書いて呼べます。
Go
func double(n int) int {
return n * 2
}
// double に4を渡すと8が返る
result := double(4)演習では重さの判定を補助関数に用意してあります。補助関数はそのまま使い、switch でどの結果を返すか選びます。関数の詳しい作り方は第4章で扱います。
要件
switch sizeで大きさを選ぶ"small"なら完成済みのsmallShipping(gram)の結果を返す"medium"と"large"は重さによらず宅配便。カンマで1つのcaseにまとめる- それ以外の大きさは
defaultで取扱不可を返す - 補助関数
smallShippingは変更しない
ヒント
編集 ゆめさく編集部