ミニ課題:買い物合計
商品名、単価、個数を持つProduct構造体を作り、スライス内の合計額を関数で計算してください。
完成条件
- 2商品以上の名前と小計を表示する
- 個数が1未満ならerrorを返す
- 想定した実行結果と一致するか確認する
解答例
個数が1未満のときはerrorを返し、正常な商品だけを合計します。
shopping.goGO
package main
import (
"errors"
"fmt"
)
type Product struct {
Name string
Price int
Count int
}
func subtotal(product Product) (int, error) {
if product.Count < 1 {
return 0, errors.New("個数は1以上にしてください")
}
return product.Price * product.Count, nil
}
func main() {
products := []Product{
{Name: "ノート", Price: 180, Count: 2},
{Name: "ペン", Price: 120, Count: 3},
}
total := 0
for _, product := range products {
price, err := subtotal(product)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%s: %d円\n", product.Name, price)
total += price
}
fmt.Printf("合計: %d円\n", total)
}実行結果OUTPUT
ノート: 360円
ペン: 360円
合計: 720円ヒントと次のテーマ
スライスをrangeで走査し、商品ごとの小計を合計します。完成したらEffective Goで、読みやすいコードの書き方を学びましょう。
