在GO
语言中main
函数的过早退出有时是有害的,原因是main
函数的退出会导致整个程序的退出,如果程序是基于协程来实现的,那么main
函数的退出必然导致协程
无法执行完成而退出,从而导致程序出现非预期的结果。
因此,在很多时候我们是不希望main
函数提前退出的。下面几种方式可以阻止main
函数提前退出。
方式一
func main() {
defer func() {
for {}
}()
}
方式二
func main() {
defer func() {
<- make(chan bool)
}()
}
方式三
func main() {
defer func() {
select{}
}()
}