第六章 函数

作者: 宇宙之一粟 | 来源:发表于2019-11-15 21:12 被阅读0次

    为什么需要函数

    函数(有些编程语言中叫做方法)几乎是每个编程语言最重要的内容,无论是函数式编程还是面向对象编程。每一段程序都由大量的函数构成,比如内置函数或者自定义函数。可以说,函数就是代码块的基本组成部分,这本章中,我们将着重讲一下Go语言中函数的相关知识。

    Go函数

    因为Go语言是编译型语言,所以函数在程序中被调用的位置不是很重要。这一点注意和解释型语言(比如Python)相区分,Python的函数在调用之前必须先定义好,否则会报错。

    • 函数本质是一种类型,可以作为其他函数的参数或返回值,也可以直接调用执行。
    • Go语言支持返回多个值,并且都可以用变量接收
    • Go不是一门纯函数式的编程语言,但支持闭包
    • 函数支持可变参数

    函数对于调用者而言没有区别,Go语言中有3种类型的函数:

    1. 带有标识符的函数
    2. 匿名函数或者lambda函数
    3. Go语言中的Methods(方法)

    函数定义

    go语言中的函数定义格式如下:

    func function_name(param-list) return_datatype {
      // do something
      function-body
      return foo
    }
    
    

    解释——函数定义的包括:函数声明关键字func、函数名、参数列表、返回类型和函数体和返回值。

    这里有些是必须的,比如func关键字和函数名

    函数可以无输入参数,也可以没有返回类型(默认会返回 0 )。

    无参无返回类型的函数

    func main() {
      hello()
    }
    
    // a simple function
    func hello() {
      fmt.Println("hello() was called")
    }
    

    运行go run hello.go后,我们能看到如下结果:

    hello()函数

    有参有返回值的函数

    定义一个add()函数,传入两个参数,返回两数字之和:

    package main
    
    import "fmt"
    
    func main() {
        hello()
        fmt.Printf("3 + 4 = %d", add(3, 4))
    }
    
    // a simple function
    func hello() {
        fmt.Println("hello() was called")
    }
    
    // a function with parameters and with returning value
    func add(a, b int) (sum int) {
    
        sum = a + b
        return
    }
    

    运行然后输出结果:

    hello() was called
    3 + 4 = 7
    

    多返回值的函数

    // a function with parameters and multiple return values
    func compute(a, b, c float64, name string) (float64, float64, string) {
        result1 := a + b
        result2 := a + b + c
        result3 := result1 + result2
        newName := fmt.Sprintf("%s value = %.2f", name, result3)
        return result1, result2, newName
    }
    

    多参数多返回值的函数

    // a function with zero or more parameters and a return value
    func add(numbers ...int) int {
        result := 0
        for _, number := range numbers {
            result += number
        }
        return result
    }
    

    相关文章

      网友评论

        本文标题:第六章 函数

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