:= の短縮宣言
関数の中では := を使う
前のレッスンの宣言を、もっと短く書けます。
Go
var name string = "きのこ図鑑"
name := "きのこ図鑑" // 同じ意味:= は「宣言して、同時に値を入れる」記号です。var も型も要りません。型は値から決まります。
実際の Go のコードでは、関数の中はほとんどが := です。var を見かけるのは、後で説明する2つの場面くらいになります。
:= が使えない場所
関数の外では使えません。
Go
package main
name := "きのこ図鑑" // エラー
var name = "きのこ図鑑" // これならよい
func main() {
price := 1200 // ここは使える
}関数の外は宣言だけを書く場所なので、var const func type のどれかで始める決まりになっています。
var を使う2つの場面
1つ目は、値をまだ決めないとき。
Go
var total int // 0 から始めたい:= は値が要るので、この書き方はできません。
2つ目は、型を自分で選びたいとき。
Go
price := 1200 // int になる
var price float64 = 1200 // float64 にしたい小数を扱う予定があるなら、最初から float64 で宣言しておきます。
:= は少なくとも1つが新しい変数
複数を同時に宣言できます。
Go
name, price := "きのこ図鑑", 1200このとき、左側の少なくとも1つが新しい変数であれば := を使えます。
Go
name, price := "きのこ図鑑", 1200
name, stock := "中古スマホ", 3 // name は上書き、stock は新規。これでよい全部が既にある変数だと、:= は使えません。その場合は = だけを使います。この規則は、第4章で複数の戻り値を受けるときに効いてきます。
要件
:=を使って変数を宣言する- 在庫が1以上なら
商品名 残りN点の形を返す - 在庫が0なら
商品名 売切れを返す
入出力例
stockNote("きのこ図鑑", 3) → "きのこ図鑑 残り3点"
stockNote("きのこ図鑑", 0) → "きのこ図鑑 売切れ"
stockNote("中古スマホ", 1) → "中古スマホ 残り1点"ヒント
編集 ゆめさく編集部