如代码所示
func main() {
server := http.Server{
Addr: "0.0.0.0:8565",
Handler: nil,
}
defer server.Shutdown(context.Background())
defer fmt.Println("closed")
server.ListenAndServe()
}
当结束程序时,并没有打印 closed
输出,这是为什么?
有疑问加站长微信联系(非本文作者))

哈哈哈哈,请用os.single的方式来捕获退出
是用什么方式结束程序的?
ctrl +c
我知道使用 os.single,但是为什么不使用 os.single 就无法执行 defer 呢?
ctrl+c是结束当前进程,defer是在程序运行时非系统干预而结束时才触发,如果是系统干预结束的,是需要用到os包中的函数去捕获,相当于你提前关闭了进程,defer根本没有执行的机会
明白了,谢谢