簡體   English   中英

for循環初始化器中的結構

[英]Struct in for loop initializer

知道為什么 for 循環初始化程序中的這個結構表達式會在編譯時產生語法錯誤嗎? 在這種情況下,指向結構的指針可以正常工作,但我需要像下面這樣的局部變量。 感謝您的建議!

type Request struct {
    id   int
    line []byte
    err  error
}

go func() {
    for r := Request{}; r.err == nil; r.id++ {
        r.line, r.err = input.ReadSlice(0x0a)
        channel <- r
    }
}()

簡化您的代碼:

for r := Request{}; r.err == nil; r.id++ {
    r.line, r.err = input.ReadSlice(0x0a)
    channel <- r
}

給出編譯時錯誤:

預期的布爾值或范圍表達式,找到了簡單的語句(缺少復合文字周圍的括號?)(以及另外1個錯誤)

該構造難以解析。 無論是復合文字還是for語句本身( for )的開頭括號,左括號'{'都不明顯。

您可以通過在復合文字周圍使用括號來使其顯而易見(如錯誤所示):

for r := (Request{}); r.err == nil; r.id++ {
    r.line, r.err = input.ReadSlice(0x0a)
    channel <- r
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM