📅  最后修改于: 2023-12-03 15:01:02.012000             🧑  作者: Mango
在Golang中,函数参数是指在函数调用时传递给该函数的值。函数在声明时可以定义0个或多个参数,这些参数可以是基本类型、引用类型、指针类型、结构体类型等。
函数参数的声明语法如下:
func function_name(parameter_list) (result_list) {
// 函数体
}
其中,parameter_list
为参数列表,包括参数名和参数类型;result_list
为函数返回值列表,包括返回值类型和名称,可以为空。
例如,以下代码定义了一个带有两个参数和一个返回值的函数:
func add(x int, y int) int {
return x + y
}
在上面的代码中,add
函数有两个参数x
和y
,类型都为int
,返回类型也为int
。
在函数调用时,可以通过值传递、指针传递或引用传递三种方式来传递函数参数。
当函数参数是基本类型(如int、float、bool等)时,采用值传递方式,即将实参的副本传递给函数。对形参进行修改不会影响实参的值。
例如,以下代码会打印出1
,而不是0
:
func setValue(x int) {
x = 1
}
func main() {
a := 0
setValue(a)
fmt.Println(a)
}
当函数参数是指针类型时,采用指针传递方式,即将实参的地址传递给函数。在函数内部可以通过指针来操作实参,对形参进行修改会影响实参的值。
例如,以下代码会打印出1
:
func setValuePtr(x *int) {
*x = 1
}
func main() {
a := 0
setValuePtr(&a)
fmt.Println(a)
}
Golang中没有引用传递的语法,但是可以通过指针来实现引用传递的效果,即将指针传递给函数,并在函数内部通过指针来操作实参。
例如,以下代码会打印出[1 2]
:
func appendItem(slice *[]int, item int) {
*slice = append(*slice, item)
}
func main() {
a := []int{1}
appendItem(&a, 2)
fmt.Println(a)
}
Golang支持定义可变参数函数,即函数参数数量是可变的。可变参数函数使用省略号(...
)来定义最后一个参数,可以接收0个或多个参数。
例如,以下代码定义了一个可变参数函数sum
,用于计算任意数量整数的和:
func sum(nums ...int) int {
res := 0
for _, num := range nums {
res += num
}
return res
}
在上面的代码中,参数nums
是一个整数类型的可变参数,它可以接收任意数量的整数类型参数。下面是该函数的调用示例:
sum(1, 2, 3) // 返回6
sum(1, 2, 3, 4, 5) // 返回15
本文介绍了Golang中的函数参数的声明语法、传递方式,以及可变参数函数的定义和使用。在使用函数时,需要了解函数参数的类型、传递方式,以及函数调用的返回值类型。