我想在停止服务前注销eureka注册信息,然后发现在goland中手动中断程序,defer并不会执行
我想问一下这是golang本身设计问题吗?为什么java手动中断依然可以执行后续处理方法
![1548040447265.jpg](https://static.studygolang.com/190121/a37f945ffba65d68b38fbec20e7e6e84.jpg)
更多评论
因为手动执行`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")
}
```
#1