在Go语言中,函数是基本的代码块,用于执行特定的任务。
定义函数
函数定义的基本语法如下:
func 函数名(参数列表) (返回值类型列表) { // 函数体 }
其中,参数列表和返回值类型列表都可以省略。如果没有返回值,则返回值类型列表可以省略。
示例代码如下:
package main import "fmt" func add(x int, y int) int { return x + y } func main() { result := add(1, 2) fmt.Println(result) }
在上面的示例中,我们定义了一个名为add的函数。它有两个参数x和y,都是整数类型。它的返回值类型是int。
函数体中使用了return语句,返回x和y的和。
在main函数中,我们调用了add函数,并将结果存入result变量中。最后,我们使用fmt包中的Println函数输出了result变量的值。
多返回值函数
在Go语言中,函数可以返回多个值。例如下面的代码:
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("hello", "world") fmt.Println(a, b) }
在上面的示例中,我们定义了一个名为swap的函数。它有两个参数x和y,都是字符串类型。它的返回值是两个字符串类型的变量y和x。
在main函数中,我们调用了swap函数,并将结果存入变量a和b中。最后,我们使用fmt包中的Println函数输出了变量a和b的值。
匿名函数
在Go语言中,函数可以是匿名的。匿名函数可以像变量一样被赋值和传递。
示例代码如下:
package main import "fmt" func main() { func() { fmt.Println("Hello, World!") }() }
在上面的示例中,我们定义了一个匿名函数,并在main函数中直接调用它。
函数作为参数和返回值
在Go语言中,函数可以作为参数传递给另一个函数,也可以作为返回值返回给调用者。
以下是函数作为参数的示例代码:
package main import "fmt" func apply(funcName func(int, int) int, x, y int) int { return funcName(x, y) } func add(x, y int) int { return x + y } func main() { result := apply(add, 1, 2) fmt.Println(result) }
在上面的示例中,我们定义了apply函数,它接受一个名为funcName的函数类型参数,以及两个整数类型的参数x和y。它的返回值类型也是整数类型。
函数类型参数funcName会在函数体中使用,调用它需要传入两个整数类型的参数x和y。
在main函数中,我们调用了apply函数,并将add函数作为参数传递给它。最后,我们使用fmt包中的Println函数输出了结果。
以下是函数作为返回值的示例代码:
package main import "fmt" func makeAdder(x int) func(int) int { return func(y int) int { return x + y } } func main() { add5 := makeAdder(5) add10 := makeAdder(10) fmt.Println(add5(2)) fmt.Println(add10(2)) }
在上面的示例中,我们定义了一个名为makeAdder的函数,它接受一个整数类型的参数x,并返回一个函数类型的变量。
返回的函数类型变量可以像普通函数一样调用,接受一个整数类型的参数y,返回x和y的和。
在main函数中,我们使用makeAdder函数分别创建了两个函数类型变量add5和add10,并调用它们进行求和。最后,我们使用fmt包中的Println函数输出结果。
总结
在Go语言中,函数是基本的代码块,用于执行特定的任务。它们可以带有参数和返回值,也可以是匿名的。
函数可以作为参数传递给另一个函数,也可以作为返回值返回给调用者。