Go语言学习04-函数

函数是一等公民

<font color="Blue">与其他主要编程语言的差异</font>

  1. 可以有多个返回值
  2. 所有参数都是值传递: slice, map, channel 会有传引用的错觉
  3. 函数可以作为变量的值
  4. 函数可以作为参数和返回值

学习函数式编程

可变参数

1
2
3
4
5
6
7
func sum(ops ...int) int {
s := 0
for _, op := range ops {
s += op
}
return s
}

defer 函数

1
2
3
4
5
6
7
func TestDefer(t *testing.T) {
defer func() {
t.Log("Clear resources")
}()
t.Log("Started")
panic("Fatal error") // defer仍会执行
}