package main
import (
“fmt”
“os”
“os/signal”
“syscall”
)
var (
stop chan bool
)
func main() {
stop = make(chan bool)
go run()
WaitForExitSign()
close(stop) //关闭管道, close管道以后就可以从管道中读数据了
fmt.Println(“结束程序”)
}
func run() {
for {
fmt.Println(“hello world”)
select {
case <-stop: //所以程序会走到这里,然后跳出循环
fmt.Println("stop")
goto Stop
default:
fmt.Println("default")
}
}
Stop:
}
//监听ctrl+c信号
func WaitForExitSign() {
c := make(chan os.Signal, 1)
//结束,收到ctrl+c 信号
signal.Notify(c, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGHUP)
<-c
}