函数

作者: __apple | 来源:发表于2018-05-26 11:16 被阅读0次

    今天我们就来说说Go语言中函数的定义方式,几乎所有的语言都有函数,所以我在这里认为大家有一种编程语言的经验了,什么形参什么虚参什么是返回值,这些概念就不给大家一一介绍了,如果不懂的同学可以私下找我, 我给你但讲。。。在这里给大家补充一个,方法与函数的区别,因为在java中基本都是叫方法,Pyhton基本有函数与方法这两个称呼,Go中没有对象的概念所以他只有函数这个叫法,那么这两种说法分别代表什么意思?其实它俩是一样的,如果你非要纠结说一下不同那么

    • 方法:设计层面
    • 函数:程序运行、过程式的称谓

    ok,关于函数的前奏就讲那么多,我们直接上一段Go的函数

    func test(a ,b int, op string) int
    

    函数的定义是乎与变量的定义是一样的,都是类型在后,名称在前
    上面的test函数有点简单了,我们来点复杂点的

    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 "/":
            q, _ := div(a, b)
            return q, nil
        default:
            return 0, fmt.Errorf(
                "unsupported operation: %s", op)
        }
    }
    

    这里需要注意的是eval函数接受两个参数, 一个是int, 一个是error 关于这个error呢我们前几节讲过了,这是Go的一种特殊的用法
    我们再来一个数学计算

    func div(a, b int) (q, r int) {
        return a / b, a % b
    }
    

    div函数就是一个整除与求余的函数,这个函数的返回值,可以公用一个int,是不是还不错呢!!!
    从这几个函数中,我们基本就能得到一些Go函数的共有特征

    • 函数返回值可以起多个名字
    • 但是这种仅限于非常简单的函数
    • 对于调用者而言没有任何区别

    其实函数还可以作为参数,可以作为返回值。
    举个例子给同学们看一下

    func apply(op func(int, int) int, a, b int) int {
        return op(a, b)
    }
    

    apply 函数有三个参数一个int返回值,里面的op 类型是一个匿名函数它有两个参数一个int返回值。
    Go里面的参数没有可变参数、操作符重载、函数重载这些概念,但是我们可以通过一些特殊的方式,实现这些功能,比如今天我们讲可变参数在Go中怎么操作。
    我们来计算1加到100

    func sum(numbers ...int) int {
        s := 0
        for i := range numbers {
            s += numbers[i]
        }
        return s
    }
    

    在sum函数中我们就用可变参数列表,实现了其他语言中一部分可变参数的功能,怎么样你学会了嘛。如果同学们碰到了哪里不懂的,可以在我们的群里面追问,谢谢大家!!!!!

    相关文章

      网友评论

          本文标题:函数

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