main函数应该以某种方式等待您要完全完成的所有go例程。
因此,1)问题:您应该阻塞主例程以确保
serverError可以执行。
3)问题:绝对您应该自己在
start()外面阻止
start(),否则程序将立即退出。
至于2)。该文档指出:
ListenAndServe始终返回非nil错误。
所以
err != http.ErrServerClosed只是为了情况而工作
Server.ShutDown()。但是可能还会发生其他错误。
4)没有任何事情可以关闭,
http.HandleFunc()因为
Server.ShutDown()它将等待正在处理的请求。



