@caitlyn_wehner
Если вам нужно, чтобы программа на Golang продолжала работать, не завершаясь, вы можете использовать несколько различных подходов:
1 2 3 |
for { // Ваш код } |
1 2 3 4 5 6 7 8 |
quit := make(chan bool) go func() { // Ваш код <-quit // Ожидание получения сигнала для завершения }() // Здесь вы можете делать что-то еще или просто ожидать |
Чтобы завершить программу, достаточно отправить значение в канал quit
:
1
|
quit <- true // Отправка сигнала для завершения программы |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package main import ( "os" "os/signal" "syscall" ) func main() { // Ваш код c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, syscall.SIGTERM) // Оповещает о получении сигнала завершения go func() { <-c // Ожидание получения сигнала для завершения // Дополнительный код здесь, если необходимо os.Exit(0) }() // Здесь вы можете делать что-то еще или просто ожидать } |
Если получен сигнал SIGINT
или SIGTERM
, программа завершит свое выполнение, выполнив код внутри функции, переданной в go
.