社区
其他技术讨论专区
帖子详情
手动停止,defer不执行
weixin_38049686
2019-09-20 10:19:21
我想在停止服务前注销eureka注册信息,然后发现在goland中手动中断程序,defer并不会执行
我想问一下这是golang本身设计问题吗?为什么java手动中断依然可以执行后续处理方法
...全文
123
2
打赏
收藏
手动停止,defer不执行
我想在停止服务前注销eureka注册信息,然后发现在goland中手动中断程序,defer并不会执行 我想问一下这是golang本身设计问题吗?为什么java手动中断依然可以执行后续处理方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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服务,必须另起线程,主线程就浪费了
golang的
def
er
的理解-
def
er
的函数一定会
执行
吗?
go语言中
def
er
可以完成延迟功能,当前函数
执行
完成后再
执行
def
er
的代码块。通过
def
er
,我们可以在代码中优雅的关闭/清理代码中所使用的变量。
Go-知识
def
er
def
er
语句采用后进先出的设计,类似于栈的方式,函数
执行
时,每遇到一个
def
er
都会把一个函数压入栈中,函数返回前在将函数从栈中取出
执行
,最早被压入栈中的函数最晚被
执行
。不仅函数正常返回会
执行
被
def
er
延迟的...
Go
def
er
用法
主要介绍go语言中
def
er
在不同情况下的
执行
原理
def
er
,panic,recov
er
def
er
,panic,recov
er
golang当心
def
er
引起死锁
def
er
造成死锁
其他技术讨论专区
476
社区成员
790,963
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章