Goのif
丸括弧は書かない
Go
if stock > 0 {
return "販売中"
}条件を丸括弧で囲みません。書いてもエラーにはなりませんが、Go のコードでは書かないのが決まりです。
波括弧のほうは省略できません。1行でも必ず要ります。
Go
if stock > 0 return "販売中" // エラー
if stock > 0 { return "販売中" } // これならよい省略できると、後から行を足したときに「波括弧を書き忘れて1行しか条件に入らない」という事故が起きます。Go はその可能性ごと消しています。
波括弧の位置も決まっている
Go
if stock > 0 { // 同じ行に置く
if stock > 0
{ // エラーになる改行して置くとエラーです。Go が行末で文の終わりを補うため、if stock > 0 で文が終わったと解釈されてしまいます。
書き方が1つしかないので、書式で議論になりません。これは Go が意図して選んだ性質です。
条件は bool だけ
第2章でも触れましたが、条件に置けるのは bool だけです。
Go
if stock { // エラー
if stock > 0 { // これならよい0 を偽として扱う機能はありません。何と比べているのかが必ずコードに書いてあるので、読むときに迷いません。
条件の前に文を置ける
Go の if には、他ではあまり見ない書き方があります。
Go
if fee := price / 10; fee > 100 {
return "手数料が高めです"
}セミコロンの前が先に実行する文、後ろが条件です。ここで作った fee は、この if の中だけで使えます。
Go
if fee := price / 10; fee > 100 {
// fee はここで使える
}
// ここでは使えない変数の寿命を短くできるのが利点です。関数の頭で宣言すると、その後ずっと生き残って、読む人が最後まで気にかけることになります。使う場所の直前で作り、その場で消えるほうが読みやすくなります。
この書き方は、第4章のエラー処理で本領を発揮します。
else if
Go
if status == 0 {
return "下書き"
} else if status == 1 {
return "販売中"
}} と else は同じ行に置きます。ただし条件が3つ以上並ぶなら、次のレッスンでやる switch のほうが読みやすくなります。
要件
- 負の数なら
不正を返す - 0 なら
無料を返す - 1以上999以下なら
お手頃を返す - 1000以上9999以下なら
標準を返す - 10000以上なら
高額を返す
入出力例
priceRange(-1) → "不正"
priceRange(0) → "無料"
priceRange(1) → "お手頃"
priceRange(999) → "お手頃"
priceRange(1000) → "標準"
priceRange(9999) → "標準"
priceRange(10000) → "高額"ヒント
編集 ゆめさく編集部