golang 中函数
package main
import (
"fmt"
"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, nil
default:
return 0, fmt.Errorf("unsupported operation: %s", op)
}
}
//返回多个值
func div(a, b int) (q, r int) {
return a / b, a % b
}
//函数式编程方式
func apply(op func(int, int) int, a, b int) int {
return op(a, b)
}
//x的y次方
func pow(a, b int) int {
return int(math.Pow(float64(a), float64(b)))
}
func main() {
if result, err := eval(6, 3, "x"); err != nil {
fmt.Println("Error:", err)
} else {
println(result)
}
if result, err := eval(6, 3, "*"); err != nil {
fmt.Println("Error:", err)
} else {
println(result)
}
println("------------------")
q, r := div(10, 3)
fmt.Println(q, r)
println("---------函数式编程---------")
fmt.Println(apply(pow, 2, 3))
println("---------匿名函数---------")
fmt.Println(apply(func(a int, b int) int {
return int(math.Pow(float64(a), float64(b)))
}, 3, 4))
println("---------可变参数列表---------")
println(sum(1, 2, 3, 4, 5))
}
func sum(numbers ...int) int {
s := 0
for i := range numbers {
s += numbers[i]
}
return s
}