每个Go程序启动的时候只有一个对用户可见的协程,称为主协程
当一个主协程退出后, 此程序也就退出了,即使还要一些其他协程在运行
一个协程调用的所有返回值(如果存在) 必须被全部舍弃
Add(用来注册新的需要完成的任务数), Done(用来通知某个任务完成了), Wait(此方法用来阻塞等待)到所有任务都已经完成后继续执行其后的语句
和协程调用类似, 被延迟函数调用的所有返回值都必须全部舍弃
当一个函数调用被延迟后, 它不会立即被执行, 它将被推入由当前协程维护的一个延迟调用堆栈。
但一个函数调用返回并进入他的退出阶段,所有在此函数中已经被推入的延迟调用将按照它们被推入堆栈的逆顺序执行,
当所有的延迟调用函数执行完毕之后,此函数调用也就真正的退出了