defer的运作机制
- 在 Go 中,只有在函数(和方法)内部才能使用 defer;
- defer 关键字后面只能接函数(或方法),这些函数被称为deferred 函数。defer 将它们注册到其所在 Goroutine 中,用于存放 deferred 函数的栈数据结构中,这些deferred 函数将在执行 defer 的函数退出前,按后进先出(LIFO)的顺序被程序调度执行:
defer的常见用法
拦截panic
按需要对panic
进行处理,可以尝试从panic
中恢复。
统一设置为string
:
1 | const ( |
功能特点:
channel
是Go语言提供的一种重要的并发原语。它在Go语言的CSP
模型中扮演者重要的角色:
goroutine
之间的通信; goroutine
之间的同步。channel
原语的使用:
1 | c := make(chan int) // 创建一个无缓冲的int类型的channel |