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 ?

王林
王林avant
2024-02-09 20:21:431178parcourir

为什么我的 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)
}

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)
        }
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer