Kodewick
开始学 →
基础←→0 / 70

菜单上没有

#061基础错误处理map约 4 分钟

面馆的 Price(dish) 查菜价,菜单上没有的就返回错误。把 Bill(order) 里那一处写好:出错就把 missing 加 1,跳过这道菜。最后返回总价,和有几道菜没有。

示例
Bill([]string{"noodles", "soup"})→(40, 0)
Bill([]string{"noodles", "pizza"})→(28, 1)
函数func Bill(order []string) (int, int)
main.go
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
}
Ctrl + Enter 也能运行
结果

写好了先点「运行」试试示例,没问题再点「提交」。