Go函数

2018-08-29  本文已影响5人  MrSYLong
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))
}
上一篇下一篇

猜你喜欢

热点阅读