跟我学习Go语言(2)
函数
普通函数的定义
func 函数名(参数) (返回值)1
2
3func do(a int, b float64) bool{
...
}
多值返回函数
1 | func do(a , b int) (v1 int,v2 bool){ |
成员方法
1 | type A struct{ |
延迟代码(defer)
示例1
2
3
4
5
6func ReadWrite() bool {
file.Open("file")
defer file.Close() //file.colse加入defer列表(先进后出的队列),在return前执行
return ture //defer列表的代码自动执行后return
}
defer修改返回参数
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14defer func() { //没有函数名 匿名函数
/* ... */
}() // () 在这里是必须的
defer func()(a int) {
/* ... */
}(10) //给返回参数赋值10
func f() (ret i n t ) { //ret 初始化为零
defer func() {
ret++ //ret 增加为1
}()
return 0 //返回的是1 而不是0!
}
变参
*不定量的int参数81
2
3
4
5func myfunc(arg ... int ) {
for i,j:=range arg{
...
}
}
如果不指定变参的类型,默认是空的接口interface{},所有类型都实现了空接口,所以可以接收任意类型
变参传递给另一个变参函数
func myfunc(arg … i n t ) {
myfunc2(arg…) //按原样传递
myfunc2(arg[:2]…) //传递部分
}
函数作为值
1 | func main() { |
匿名函数作为map的值。1
2
3
4
5var xs = map[ int ]func() int {
1: func() int { return 10 },
2: func() int { return 20 },
3: func() int { return 30 },
}
回调
1 | func printit(x int ) { |