概述

函数 是将一个或者一类问题包装为一个代码块,能够被屡次调用,进步代码重用性。

Go 函数中申明、定义、参数、返回值这些根底概念,和其余编程语言中的统一,这里不再赘述。

语法规定

Go 函数反对单个返回值和多个返回值。

# 单个返回值# 参数可省略func 函数名称(参数 1 值 参数 1 类型, 参数 2 值 参数 2 类型 ...) 返回值类型 {    // do something}# 多个返回值,不指定名称# 参数可省略func 函数名称(参数 1 值 参数 1 类型, 参数 2 值 参数 2 类型 ...) (返回值 1 类型, 返回值 2 类型) {    // do something}# 多个返回值,指定名称# 参数可省略func 函数名称(参数 1 值 参数 1 类型, 参数 2 值 参数 2 类型 ...) (返回值 1 名称 返回值 1 类型, 返回值 2 名称 返回值 2 类型) {    // do something}

例子

单个返回值

package mainimport "fmt"func max(x, y int) int {    if x > y {        return x    } else {        return y    }}func main() {    fmt.Printf("max = %d\n", max(1, 2))}// $ go run main.go// 输入如下 /**  max = 2*/

多个返回值,不指定名称

package mainimport "fmt"func getNumbers() (int, int, int) {    return 1, 2, 3}func main() {    x, y, z := getNumbers()    fmt.Printf("x = %d, y = %d, z = %d\n", x, y, z)}// $ go run main.go// 输入如下 /**  x = 1, y = 2, z = 3*/

多个返回值,指定名称

package mainimport "fmt"func getNumbers() (x int, y float64, z string) {    x = 1024    y = 3.14    z = "hello world"    return}func main() {    x, y, z := getNumbers()    fmt.Printf("x = %d, y = %.2f, z = %s\n", x, y, z)}// $ go run main.go// 输入如下 /**  x = 1024, y = 3.14, z = hello world*/

参数/返回值 类型雷同简化

  • 当参数类型雷同时,能够将类型放在最初一个参数变量前面
  • 当返回值类型雷同时,能够将类型放在最初一个返回值变量前面
package mainimport "fmt"func getMaxAndMin(x, y, z int) (max, min int) {    if x > y {        max = x        min = y        if x < z {            max = z        } else if z < y {            min = z        }    } else {        max = y        min = x        if y < z {            max = z        } else if z < x {            min = x        }    }    return}func main() {    max, min := getMaxAndMin(100, 200, 300)    fmt.Printf("max = %d, min = %d\n", max, min)}// $ go run main.go// 输入如下 /**  max = 300, min = 100*/

扩大浏览

  1. https://zh.wikipedia.org/wiki...

分割我