Go

Go練習問題

ここまで学んだ文法を、買い物合計のプログラムで確認しましょう。

Go入門の講座一覧

01

ミニ課題:買い物合計

商品名、単価、個数を持つProduct構造体を作り、スライス内の合計額を関数で計算してください。

02

完成条件

  • 2商品以上の名前と小計を表示する
  • 個数が1未満ならerrorを返す
  • 想定した実行結果と一致するか確認する
03

解答例

個数が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円
04

ヒントと次のテーマ

スライスをrangeで走査し、商品ごとの小計を合計します。完成したらEffective Goで、読みやすいコードの書き方を学びましょう。