Maison > développement back-end > Golang > Pourquoi est-ce que j'obtiens une erreur de syntaxe avec mon instruction switch ?

Pourquoi est-ce que j'obtiens une erreur de syntaxe avec mon instruction switch ?

王林
Libérer: 2024-02-09 20:21:43
avant
1198 Les gens l'ont consulté

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

L'éditeur PHP Xinyi rencontre souvent divers problèmes et confusions lors de l'écriture de code. L'un des problèmes courants concerne les erreurs de syntaxe lors de l'utilisation des instructions switch. Cela peut empêcher le code de fonctionner correctement et entraîner des problèmes de développement. Alors, pourquoi cette erreur se produit-elle ? Dans cet article, nous répondrons à cette question et vous proposerons quelques solutions pour vous aider à mieux comprendre et utiliser les instructions switch et à éviter les erreurs de syntaxe. Nous allons jeter un coup d'oeil!

Contenu de la question

J'ai besoin d'obtenir une variable de chaîne du canal dans l'instruction switch.

go version go1.19.6 linux/amd64 .test.go:12:12 : Erreur de syntaxe : inattendu : =, attendu :

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)
}
Copier après la connexion

J'ai croisé plusieurs tutoriels mais je n'arrive pas à comprendre ce qui ne va pas.

Solution de contournement

go n'autorise pas la communication par canal car switch 情况条件,您必须使用 selectau lieu de cela, la construction est très similaire.

L'instruction golang select est similaire à l'instruction switch et est utilisée pour les opérations multicanaux. Cette instruction se bloque jusqu'à ce que les cas fournis soient prêts.

Dans votre cas, c'est le cas

func main() {
    writeMsgs := make(chan string)
    go sendMsgs(writeMsgs)
    for {
        select {
        case msg := <-writeMsgs:
            fmt.Println(msg)
        }
    }
}
Copier après la connexion

Ici vous pouvez l'essayer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal