Как прервать запущенные горутины GOLANG?

Канал — это объект соединения, которым горутины обмениваются данными.
пример создания канала:
package main
import "fmt"
func main() {
var c chan int
fmt.Println(c)
}
В Каналах существует операция закрытия, которая закрывает канал, так что операция отправки на канале не может выполняться. Через закрытый канал невозможно передать или принять какие- либо данные.
Когда на канале выполняется операция приема, мы проверяем, закрыт ли канал или нет, и выходим из горутины, если канал закрыт.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
ch := make(chan string)
go func() {
for {
channel, ok := <-ch
if !ok {
fmt.Println("Shut Down")
defer wg.Done()
return
}
fmt.Println(channel)
}
}()
ch <- "Start"
ch <- "Processing"
ch <- "Finishing"
close(ch)
wg.Wait()
}
Вывод программы Go:
C:\Golang\goroutines>go run main.go
Start
Processing
Finishing
Shut Down
+1
+1
+1
+1
+1



