Что именно работает не так как я ожидаю. Я новичек в GO.
У меня есть луп бесконечный который я запускаю и останавливаю отправляя в канал m[1] сообщение. Но вот что не понятно, я передаю go loop(m[1]); не по ссылке как я понимаю. Почему когда я шлю в m[1] сообщение оно попадает в луп который был вызван до той стройки где я сообщение отпраляю.
Я думал что такое нужно вызывать с & или подобным.
package main
import (
"fmt"
"time"
)
func loop(quit chan bool) {
n := 0
for {
select {
case <-quit:
break
default:
// do stuff. I'd call a function, for clarity:
fmt.Println(n)
time.Sleep(500 * time.Millisecond)
n++
}
}
}
func main() {
m := make(map[int]chan bool)
m[1] = make(chan bool)
go loop(m[1]);
time.Sleep(2 * time.Second)
m[1] <- true
}