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

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

王林
發布: 2024-02-09 20:21:43
轉載
1186 人瀏覽過

为什么我的 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板