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))
}
golang-函数
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...