函数作为类型使用

    1. func main() {
    2. a := A
    3. a()
    4. }
    5. func A() {
    6. fmt.Println("Func A")
    7. }

    闭包

    1. func main() {
    2. f := closure(10)
    3. // 11
    4. fmt.Println(f(1))
    5. return func(y int) int{
    6. return x + y
    7. }
    8. }

    延迟调用函数 defer

    -Go 没有异常机制,但有 panic / recover 模式来处理错误
    -panic 可以在任何地方引发,但 recover 只有在 defer 调用的函数中有效

    1. func main() {
    2. A()
    3. C()
    4. }
    5. func A() {
    6. fmt.Println("A")
    7. func B() {
    8. //捕获
    9. defer func() {
    10. if err := recover(); err != nil {
    11. fmt.Println("Recover in B")
    12. }
    13. }()
    14. panic("B")
    15. }
    16. func C() {
    17. }