企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、函数定义 Go 语言函数定义格式如下: ~~~ func function_name( [parameter list] ) [return_types] { 函数体 } ~~~ 函数定义解析: * func:函数由 func 开始声明 * function\_name:函数名称,参数列表和返回值类型构成了函数签名。 * parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。 * return\_types:返回类型,函数返回一列值。return\_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return\_types 不是必须的。 * 函数体:函数定义的代码集合。 ### 1、实例 ~~~ package main import "fmt" /* 函数返回两个数的最大值 */ func max(a, b int) int { var results int if a > b { results = a } else { results = b } return results } /* 函数返回两个数的最小值 */ func min(a, b int) (results int) { if a > b { results = b } else { results = a } return } func main() { var a, b int = 20, 10 max := max(a, b) min := min(a, b) fmt.Printf("最大值为:%d\n", max) fmt.Printf("最小值为:%d", min) } ~~~ 执行结果: 最大值为:20 最小值为:10 ### 2、返回多个参数 ~~~ package main import "fmt" /* 函数返回两个数的最小值 */ func fun001(a, b int) (int, int) { return a, b } func main() { var a, b int = 20, 10 a1, b1 := fun001(a, b) fmt.Println(a1) fmt.Println(b1) } ~~~ 执行结果: 20 10 ## 二、函数参数 ~~~ package main import "fmt" func fun01(a int) { a = 2 fmt.Println("fun01中传入的值为:", a) } func main() { var a int = 1 fmt.Println("main中的值第一次打印:", a) fun01(a) fmt.Println("main中调用fun01后打印:", a) } ~~~ 打印结果: main中的值第一次打印: 1 fun01中传入的值为: 2 main中调用fun01后打印: 1 ## 三、闭包 ~~~ package main import "fmt" func getSequence() func() int { i := 0 return func() int { i += 1 return i } } func main() { /* nextNumber 为一个函数,函数 i 为 0 */ nextNumber := getSequence() /* 调用 nextNumber 函数,i 变量自增 1 并返回 */ fmt.Println(nextNumber()) fmt.Println(nextNumber()) fmt.Println(nextNumber()) /* 创建新的函数 nextNumber1,并查看结果 */ nextNumber1 := getSequence() fmt.Println(nextNumber1()) fmt.Println(nextNumber1()) } ~~~ 执行结果: 1 2 3 1 2