美文网首页
golang-函数

golang-函数

作者: 爱吃豆包 | 来源:发表于2019-12-17 20:11 被阅读0次
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-函数

      本文链接:https://www.haomeiwen.com/subject/apyenctx.html