函数的声明
- go的函数声明通过
func
这个关键字,params
是他的形参设置,result
是他的return值 - 当设置
params
后调用func
必须传入对应函数参数,当设置result
后也必须有return
,且params
和result
类型符合声明的
func name(params) (result) {
}
// 普通函数的声明
func getMax(num1 int, num2 int) (min int, max int) {
// 推荐直接赋值给需要return的值
if num1 > num2 {
max = num1
min = num2
} else {
max = num2
min = num1
}
return // 每一个函数必须要有return
}
可变参数类型函数
- 可变参数一般被放置在函数列表的末尾,前面是固定参数列表,当没有固定参数时,所有变量就将是可变参数。
// 可变参数类型
func getArr(a ...int) (length int) {
length = len(a)
return
}
// 部分参数是可变参数
func getLen(a int, c ...int) (length int) {
length = len(c) + a
return
}
函数的参数传递
函数的参数分为两种:
- 实际参数(实参):实参的本质是一个变量,它可以是变量名、数组名、常数或者表达式,已实际占用内存空间
- 形式参数(形参):形参本质是一个名字,不占用内存空间
// 实参
func shiCan(a int, b int) (result int) {
result = a + b
return
}
func main() {
shiCan(1, 4)
}
// 形参
var a int = 3
var b int = 5
func xingCan(a int, b int) (result int) {
result = a + b
return
}
func main() {
xingCan()
}
函数的参数的传递方式:
在 Golang 中函数调用参数均为值传递,函数在穿参的时候,都是以值的方式传递
例子一:(int类型)
func add(num int) (result int) {
fmt.Println(&num)
return num
}
func main() {
num := 10
result := add(num)
fmt.Println(&num)
fmt.Println(result)
}
例子二:(array类型)
func add(num [1]int) (result [1]int) {
num[0] = 1
fmt.Println(num) // [1]
return num
}
func main() {
num := [...]int{10}
result := add(num)
fmt.Println(num) // [10]
fmt.Println(result)
}
例子三:(指针类型)
func modify(value *int) {
value = nil
fmt.Println(value) // 0x0
}
func main() {
a := new(int)
modify(a)
fmt.Println(a) // 0xc000040780
}
有疑问加站长微信联系(非本文作者)