package main
import (
"fmt"
"math"
)
// 加法
func eval(a, b int, op string) int {
switch op {
case "+":
return a + b
case "-":
return a - b
case "*":
return a * b
case "/":
return a / b
default:
panic("您输入的参数错误!:" + op)
}
}
// 除法 , 返回结果的同时,顺带返回余数
func div(a, b int) (q , t int) {
return a / b, a % b
}
// 成功则返回值, 出错则返回异常
func evalOrErr(a, b int, op string) (q int, err error) {
switch op {
case "+":
return a + b, nil
case "-":
return a - b, nil
case "*":
return a * b, nil
case "/":
return a / b, nil
default:
return 0, fmt.Errorf("您输入的参数错误!%s", op)
}
return 0, fmt.Errorf("您输入的参数错误!")
}
// 匿名函数
// 表示 op 是个匿名函数, c,d是个参数
func apply(op func(a, b int) int, c, d int) int {
// 返回 op 匿名函数的值
// 把 c,d 当做参数传进去
return op(c, d)
}
// 计算,返回int
func pwo(a, b int) int {
return int(math.Pow(float64(a), float64(b)))
}
// 可变参数列表
// 累加函数
func sum (numbers ...int) int {
s := 0
// range 表示每一个元素的坐标
for i := range numbers {
s += numbers[i]
}
return s
}
func main() {
fmt.Println(eval(5,2,"-"))
fmt.Println(div(13,3))
q, err := evalOrErr(13,2,"-")
// 如果不为 nil 表示出错了
if err != nil {
fmt.Println(err)
} else {
fmt.Println(q)
}
// 使用匿名函数
fmt.Println(apply(pwo,3,6))
fmt.Println(apply(
func(a, b int) int {
return int(math.Pow(float64(a), float64(b)))
},
3 ,6))
}
网友评论