面馆的 Price(dish) 查菜价,菜单上没有的就返回错误。把 Bill(order) 里那一处写好:出错就把 missing 加 1,跳过这道菜。最后返回总价,和有几道菜没有。
Bill([]string{"noodles", "soup"})→(40, 0)Bill([]string{"noodles", "pizza"})→(28, 1)func Bill(order []string) (int, int)package main
import "errors"
var menu = map[string]int{"noodles": 28, "dumplings": 20, "soup": 12}
func Price(dish string) (int, error) {
p, ok := menu[dish]
if !ok {
return 0, errors.New("not on the menu")
}
return p, nil
}
func Bill(order []string) (int, int) {
total, missing := 0, 0
for _, dish := range order {
p, err := Price(dish)
if err != nil {
// 在这里写:missing 加 1,跳过这道菜
}
total += p
}
return total, missing
}
写好了先点「运行」试试示例,没问题再点「提交」。