手动停止,defer不执行

weixin_38049686 2019-09-20 10:19:21
我想在停止服务前注销eureka注册信息,然后发现在goland中手动中断程序,defer并不会执行

我想问一下这是golang本身设计问题吗?为什么java手动中断依然可以执行后续处理方法
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38051598 2019-09-20
  • 打赏
  • 举报
回复
因为手动执行`Ctrl + C`相当于给程序发了个`kill`信号,进程就直接退出了,可以参考下面代码优雅的退出go进程 ```go import ( "fmt" "os" "os/signal" ) func main() { c := make(chan os.Signal) signal.Notify(c) defer func() { fmt.Println("defer...") }() fmt.Println("main 1") //time.Sleep(time.Hour) <-c fmt.Println("main 2") } ```
weixin_38055275 2019-09-20
  • 打赏
  • 举报
回复
感谢,只是这样就不能在主线程监听http服务,必须另起线程,主线程就浪费了

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧