基本の型
4つ覚えれば足りる
fleama の商品データを表すのに使う型は、ほとんどこの4つです。
プレーンテキスト
int 整数 在庫数、商品ID
float64 小数 手数料率、平均価格
string 文字 商品名、説明文
bool 真か偽か 売切れかどうかint は整数
Go
stock := 3
price := 1200小数点以下を持ちません。割り算をすると切り捨てになります。
Go
7 / 2 // 3 になる。3.5 ではないここは意識しておく価値があります。合計を件数で割って平均を出すとき、int のままだと小数が消えます。
float64 は小数
Go
rate := 0.1
average := 1250.5名前の 64 は、値を記録するのに使うビット数です。float32 もありますが、特別な理由がなければ float64 を使います。Go で小数といえば float64 だと思ってかまいません。
小数には誤差が付きものです。
Go
x := 0.1
y := 0.2
x + y // 0.30000000000000004バグではなく、小数を2進数で表すときに必ず起きるずれです。お金の計算を float64 でやらないのは、このためです。fleama でも価格は int の「円」で持ちます。
string は文字
Go
name := "きのこ図鑑"ダブルクォートで囲みます。シングルクォートは別の意味になるので使えません。
つなげるのは + です。
Go
"きのこ" + "図鑑" // きのこ図鑑bool は真か偽か
Go
soldOut := falsetrue と false の2つだけです。0 や空文字を偽として扱う機能はありません。
Go
if stock { // エラー。int は条件にできない
if stock > 0 { // これならよい他の言語から来ると引っかかる場所です。Go では条件に置けるのは bool だけ、と覚えてください。曖昧さが無いぶん、読むときに迷いません。
要件
商品名 在庫N 手数料R 販売中の形を返す- 売切れフラグが
trueのときは、最後を売切れにする - 手数料率の埋め込みには
%vを使う
入出力例
describeStock("きのこ図鑑", 3, 0.1, false) → "きのこ図鑑 在庫3 手数料0.1 販売中"
describeStock("きのこ図鑑", 0, 0.1, true) → "きのこ図鑑 在庫0 手数料0.1 売切れ"
describeStock("中古スマホ", 2, 0.05, false) → "中古スマホ 在庫2 手数料0.05 販売中"ヒント
編集 ゆめさく編集部