[英]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.