Heim >Backend-Entwicklung >Golang >Warum erhalte ich bei meiner Switch-Anweisung einen Syntaxfehler?
Der PHP-Editor Xinyi stößt beim Schreiben von Code häufig auf verschiedene Probleme und Verwirrungen. Eines der häufigsten Probleme sind Syntaxfehler bei der Verwendung von Switch-Anweisungen. Dies kann die ordnungsgemäße Ausführung des Codes verhindern und Probleme bei der Entwicklung verursachen. Warum tritt dieser Fehler auf? In diesem Artikel beantworten wir diese Frage und stellen einige Lösungen bereit, die Ihnen helfen, Switch-Anweisungen besser zu verstehen und zu verwenden und Syntaxfehler zu vermeiden. Lass uns einen Blick darauf werfen!
Ich muss eine Zeichenfolgenvariable vom Kanal in der Switch-Anweisung abrufen.
Go-Version go1.19.6 Linux/AMD64 .test.go:12:12: Syntaxfehler: unerwartet: =, erwartet:
package main import ( "fmt" ) func main() { writeMsgs := make(chan string) go sendMsgs(writeMsgs) for { switch{ case msg := <-writeMsgs: fmt.Println(msg) } } } func sendMsgs(writeMsgs chan string) { for i:=0;i<5;i++ { writeMsgs<-"Test" } close(writeMsgs) }
Ich habe auf mehrere Tutorials verwiesen, kann aber nicht herausfinden, was falsch ist.
go erlaubt keine Kanalkommunikation, da switch
情况条件,您必须使用 select
stattdessen das Konstrukt sehr ähnlich ist.
Die Golang-Select-Anweisung ähnelt der Switch-Anweisung und wird für Mehrkanaloperationen verwendet. Diese Anweisung blockiert, bis alle bereitgestellten Fälle bereit sind.
In Ihrem Fall ist es so
func main() { writeMsgs := make(chan string) go sendMsgs(writeMsgs) for { select { case msg := <-writeMsgs: fmt.Println(msg) } } }
Hier kannst du es ausprobieren.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei meiner Switch-Anweisung einen Syntaxfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!