package main
import "fmt"
import "math"
func eval(a, b int, op string) (int, error) {
switch op {
case "+":
return a + b, nil
case "-":
return a - b, nil
case "*":
return a * b, nil
case "/":
// return a / b
q, _ := div(a, b)
return q, nil
default:
// panic("unsupported operation: " + op) 中断执行
return 0, fmt.Errorf("unsupported operation: %s", op)
}
}
// func div(a, b int) (int, int) {
// return a / b, a % b
// }
// func div(a, b int) (q, r int) {
// return a / b, a % b
// }
func div(a, b int) (q, r int) {
q = a / b
r = a % b
return
}
func apply(op func(int, int) int, a, b int) int {
return op(a, b)
}
func pow(a, b int) int {
return int(math.Pow(float64(a), float64(b)))
}
func sum(numbers ...int) int {
s := 0
for i := range numbers {
s += numbers[i]
}
return s
}
func main() {
fmt.Println(eval(3, 4, "*"))
fmt.Println(eval(12, 4, "/"))
fmt.Println(eval(12, 4, "x"))
if result, err := eval(3, 4, "x"); err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(result)
}
fmt.Println(div(13, 3))
q, r := div(13, 3) //
fmt.Println(q, r)
fmt.Println(apply(pow, 2, 2))
fmt.Println(apply(
func(a int, b int) int {
return int(math.Pow(float64(a), float64(b)))
}, 2, 3))
fmt.Println(sum(1, 2, 3, 4, 5))
}
2018-10-19Go语言第二天-函数
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.万人迷 吉姆·罗纳德属于典型的万人迷。他开朗、积极,有亲和力。作为公司头牌销售,他似乎总有讲不完的笑话。 长期...