1 函数定义
在Go语言中定义函数使用func
关键字,格式如下
func 函数名(参数) (返回值){
函数体
}
- 函数名:由字母、数字、下划线组成。但首字母不能为数字,同一个包下,函数名称也不能重复
- 参数:名称和类型组成,多个参数之间使用
,
分隔 - 返回值:由返回值名称和返回值类型组成,返回值名称可以省略,多个返回值需要用
()
包裹,并用,
分隔 - 函数体:实现指定功能的代码块
如下即为一个求和函数:
func calcSum(x, y int) int{
return x + y
}
2 函数作为参数传递
package main
import (
"fmt"
)
//声明一个函数类型
type cb func(int) int
func main() {
testCallBack(1, callBack)
testCallBack(2, func(x int) int {
fmt.Printf("我是回调,x:%d\n", x)
return x
})
}
func testCallBack(x int, f cb) {
f(x)
}
func callBack(x int) int {
fmt.Printf("我是回调函数,x:%d\n", x)
return x
}
3 匿名函数与闭包
匿名定义格式如下
func (参数) (返回值) {
函数体
}
立即执行函数
匿名函数定义完后面加()直接执行
func main(){
func(x, y int){
fmt.Println(x + y)
}(10, 20)
}
闭包
package main
import (
"fmt"
)
func getSequence() func() int {
i := 0
return func() int {
i += 1
return i
}
}
func main() {
/* nextNumber 是一个函数 函数i为0 */
nextNumber := getSequence()
/* 调用 nextNumber 函数,i变量自增1并返回 */
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
/* 创建新的函数 nextNumber1, 并查看结果 */
nextNumber1 := getSequence()
fmt.Println(nextNumber1())
fmt.Println(nextNumber1())
}
标签:闭包,函数,int,fmt,Println,func,Go,返回值
From: https://blog.51cto.com/u_11906056/7024434