Als ich versuchte zu drucken: goroutine Kanäle - der Wert der Sende Anweisung
fmt.Println(c <- x)direkt vor der for-Schleife in dem Codeblock unten, um zu sehen, was „c < - x“ zu bewerten wäre, hätte es die Fehlermeldung:
./select.go:7: send-Anweisung c < - x wird als Wert verwendet; Verwendung auswählen für nicht blockierenden Send
Wird "c < - x" als wahr ausgewertet, wenn der Sendevorgang erfolgreich war? Und warum lässt Go nur den Wert der send-Anweisung (aka Wert von "c < - x") in case-Anweisungen innerhalb einer select-Anweisung verwenden?
func fibonacci(c, quit chan int) {
x, y := 1, 1
for {
select {
case c <- x:
x, y = y, x + y
case <-quit:
fmt.Println("quit")
return
}
}
}
Danke
Ich mache manchmal das gleiche versehentlich, wenn mein Python-Gehirn mit meinen Go-Zielen in Konflikt gerät und ich versuche, einen "Callback" als "Callback (structInstance.method)" zu übergeben – jdi