Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich bei meiner Switch-Anweisung einen Syntaxfehler?

Warum erhalte ich bei meiner Switch-Anweisung einen Syntaxfehler?

王林
王林nach vorne
2024-02-09 20:21:431134Durchsuche

为什么我的 switch 语句会出现语法错误?

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!

Frageninhalt

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.

Workaround

go erlaubt keine Kanalkommunikation, da switch 情况条件,您必须使用 selectstattdessen 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen