package main
import "fmt"
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 "/":
// r不使用
q, _ := divTwo(a, b)
return q, nil
default:
return 0, fmt.Errorf("unsuported operation: %s", op)
}
}
// 13 / 3 = 4 ... 1
func div(a, b int) (int, int) {
return a / b, a % b
}
func divTwo(a, b int) (q, r int) {
return a / b, a % b
}
func divThree(a, b int) (q, r int) {
q = a / b
r = a % b
return
}
// 可变参数列表
func sum(numbers ...int) int {
s := 0
for i := range numbers {
s += numbers[i]
}
return s
}
// 返回值类型写在最后面
// 函数可以返回多个值
// 函数返回多个值时可以起名字
// 仅用于非常简单的函数
// 对于调用者而言没有区别
func main() {
if reslut, err := eval(3, 4, "x"); err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(reslut)
}
fmt.Println(div(13, 3))
q, r := divTwo(13, 3)
fmt.Println(q, r)
fmt.Println(sum(1, 2, 3, 4, 5))
}
网友评论