Go(也称为Golang)语言是一种静态类型、编译型语言,由Google开发,特别注重代码的简洁性、清晰性和效率。在Go语言中,函数是基本的代码块,用于执行特定任务。Go的函数定义和调用非常直接和灵活。
Go中的函数定义使用func
关键字开始,后跟函数名和参数列表(参数名和类型),然后是返回类型(如果有的话,使用括号括起来)。函数体被大括号{}
包围。
func functionName(parameter1 type1, parameter2 type2) (returnType1, returnType2) {
// 函数体
return value1, value2
}
如果函数没有参数,可以省略参数列表;如果函数没有返回值,则返回类型也可以省略(或者显式地写void
的等价物()
)。
无参数无返回值的函数
func sayHello() {
fmt.Println("Hello, World!")
}
有参数有返回值的函数
func add(a int, b int) int {
return a + b
}
多返回值的函数
func swap(x, y string) (string, string) {
return y, x
}
Go支持可变参数(也称为可变长参数或不定参数),通过在参数类型前添加...
来指定。可变参数必须是最后一个参数,并且它必须是一个切片的类型。
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
Go也支持匿名函数(也称为闭包),这些是没有函数名的函数。它们通常被赋值给变量,然后像普通函数那样被调用。
add := func(a, b int) int {
return a + b
}
result := add(5, 3)
fmt.Println(result) // 输出: 8
Go支持递归函数,即函数直接或间接地调用自身。递归函数在解决某些类型的问题时非常有用,如遍历树形结构或计算阶乘。
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
Go的defer
语句会延迟函数的执行直到包含它的函数即将返回。这通常用于资源清理,如关闭文件、解锁互斥锁等。
func a() {
defer fmt.Println("world")
fmt.Println("hello")
}
// 输出:
// hello
// world
Go的函数是强大和灵活的,支持多种编程范式和模式,使得编写高效、可维护的代码变得容易。
上一篇: Golang 语言循环语句
下一篇: Golang 语言变量作用域