1、函数定义
2、多值返回
3、引用传递
4、函数作为实参使用
5、匿名函数
1、函数定义函数的定义和java一样,使用{}进行包裹,并且要明确入参类型以及返回类型。
样例代码如下:
func min(num1, num2 int) int {
if num1 <= num2 {
return num1
} else {
return num2
}
}
func main() {
fmt.Printf("max = %d\n", min(10, 12))
}
执行结果
2、多值返回max = 10
和Python一样,可以多值返回。
样例代码如下
func swap(num1, num2 int) (int, string) {
return num1 + num2, "haha"
}
func main() {
a, b := swap(10, 12)
fmt.Printf("swap = %d - %v\n", a, b)
}
执行结果
3、引用传递swap = 22 - haha
可以将参数的引用地址传递到函数,这样操作会影响到实际参数。
样例代码如下
func swap1(num1, num2 *int) {
var temp int
temp = *num1
*num1 = *num2
*num2 = temp
}
func main() {
c, d := 10, 20
swap1(&c, &d)
fmt.Printf("swap1 c=%d,d=%d\n", c, d)
}
执行结果
4、函数作为实参使用swap1 c=20,d=10
和python一样,可以在方法内部定义函数。
样例代码如下
func method(num1 int) int {
getMax := func(x, y int) int {
if x > y {
return x
} else {
return y
}
}
a := num1 - 10
b := getMax(num1, a)
fmt.Printf("value = %d\n", b)
return b
}
func main() {
fmt.Printf("method = %d\n", method(20))
}
执行结果
5、匿名函数value = 20
method = 20
函数返回匿名函数,形成闭包。
样例代码如下
//匿名函数
func anonymous(num int) func() int {
var a int
a = num
return func() int {
a += 1
return a
}
}
func main() {
flagNum := anonymous(100)
fmt.Printf("1 -> %d\n", flagNum())
fmt.Printf("2 -> %d\n", flagNum())
fmt.Printf("3 -> %d\n", flagNum())
flagNum1 := anonymous(18)
fmt.Printf("4 -> %d\n", flagNum1())
fmt.Printf("5 -> %d\n", flagNum1())
}
执行结果
1 -> 101
2 -> 102
3 -> 103
4 -> 19
5 -> 20
到此这篇关于Go语言学习之函数的定义与使用详解的文章就介绍到这了,更多相关Go语言 函数内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!