首頁  >  文章  >  後端開發  >  為什麼我的 switch 語句會出現語法錯誤?

為什麼我的 switch 語句會出現語法錯誤?

王林
王林轉載
2024-02-09 20:21:431134瀏覽

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

php小編新一在寫程式碼時,常常會遇到各種問題和困惑。其中一個常見的問題是在使用 switch 語句時出現語法錯誤。這可能會使程式碼無法正常運行,給開發帶來困擾。那麼,為什麼會出現這種錯誤呢?在本文中,我們將解答這個問題,並提供一些解決方案,幫助您更好地理解和使用 switch 語句,避免語法錯誤的發生。讓我們一起來看看吧!

問題內容

我需要在 switch 語句中從通道取得字串變數。

go版本go1.19.6 linux/amd64 .\test.go:12:12:語法錯誤:意外:=,期待:

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

我交叉引用了多個教程,但不知道哪裡出了問題。

解決方法

go 不允許通道通信,因為switch 情況條件,您必須使用select相反,構造非常相似。

golang select語句類似於switch語句,用於多通道運算。此語句將阻塞,直到提供的任何案例準備就緒為止。

在你的情況下是

func main() {
    writeMsgs := make(chan string)
    go sendMsgs(writeMsgs)
    for {
        select {
        case msg := <-writeMsgs:
            fmt.Println(msg)
        }
    }
}

在這裡你可以試試看。

以上是為什麼我的 switch 語句會出現語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除