-
函数是基本的代码块,用于执行一个任务。
-
Go 中有 3 种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在 struct 上的函数)。
-
Go 中函数参数可以没有名称,例如 func test(int,int)。
-
Go 中的函数可以作为一种 type 类型,例如 type callback func(int,int) int。
-
Go 程序中最少有一个 main() 函数。
-
Go 中不允许函数重载(overload),也就是说不允许函数同名。
-
Go 中的函数不能嵌套函数,但可以嵌套匿名函数(内联形式)。
-
函数是一个值,可以将函数赋值给变量,使得这个变量也成为函数,例如 nextNumber := closePackage()。
-
函数可以作为参数传递给另一个函数,函数的返回值可以是一个函数。这些特性使得函数变得无比的灵活,例如回调函数、闭包等等功能都依赖于这些特性。
-
Go 中的函数不支持泛型(目前不支持),但如果需要泛型的情况,大多数时候都可以通过 接口、type switch、reflection 的方式来解决。但使用这些技术使得代码变得更复杂,性能更低。
-
可以通过函数来划分不同的功能,逻辑上每个函数执行的是指定的任务。
-
函数声明告诉了编译器函数的名称,返回类型和参数。
-
Go 中的标准库提供了多种可动用的内置的函数。例如:len() 函数可以接受不同类型参数并返回该类型的长度。如果传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。
一,基础函数
语法
func 函数名 (参数列表) (返回值列表) {
......
}
无参数无返回值
func test() {
......
}
传参有返回值
func test(a int,b int) int {
......
return n
}
传参有多个返回值
func test(a int,b int) (int,int) {
......
return a+b,a*b
}
示例
// 定义 max() 函数传入两个整型参数 num1 和 num2,并返回两个参数的最大值
func max(num1,num2 int) int {
if num1 > num2 {
return num1
} else {
return num2
}
}
// 函数的调用
package main
import "fmt"
func main() {
var test1 int = 100
var test2 int = 200
var result int
result = max(test1,test2)
fmt.Println("最大值为:",result)
}
func max(num1,num2 int) int {
if num1 > num2 {
return