-4
A
回答
1
您使用:=
其丟棄變量的以前的內容。您不在該範圍中使用morelines
,因此出現錯誤消息。
如果您事先聲明瞭變量並且不使用:=
,它可以正常工作。函數ReadLine()
可能不會做你認爲應該做的事。
package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
bio := bufio.NewReader(os.Stdin)
var line []byte
var err error
moreline := true
for moreline {
line, moreline, err = bio.ReadLine()
if err != nil {
log.Fatal(err)
}
fmt.Println(line)
}
}
2
您正在聲明一個您不使用它的變量(moreline
)。這裏有兩種選擇:要麼用下劃線替換moreline
,這意味着你可以省略返回值。
for moreline {
line, _, err := bio.ReadLine()
if err != nil {
log.Fatal(err)
}
fmt.Println(line)
}
但是一個更好的選擇將是使用ReadScanner
,ReadBytes('\n')
或ReadString('\n')
。
檢查bufio.go
文件這就是你作爲ReadLine
方法描述:
的ReadLine是一個低級別的在線閱讀原始。大多數呼叫者應該使用ReadBytes('\ n')或ReadString('\ n')代替或使用掃描器。
調用UnreadByte
後ReadLine
永遠讀讀取的最後一個字節(可能屬於行結束字符),即使該字節是不是ReadLine
返回線的一部分。 ReadLine
要麼返回一個非零線,要麼返回一個錯誤,從來都不是。
因此,這將是一個更好的選擇:
scanner := bufio.NewScanner(bio)
for scanner.Scan() {
line := scanner.Text()
fmt.Printf("%v\n", line)
}
相關問題
- 1. 除變量達到條件邊界但尚未發生有條件的行爲
- 2. 如何訪問從一個用戶控件主窗口的datacontext已宣告但尚未當地一個
- 3. 參數x尚未宣佈
- 4. 使用VBA變量設置條件格式表達式?
- 5. VS2015:已評估的表達式,但不支持變量
- 6. 如何在bash條件表達式中使用變量?
- 7. Cognos:在條件變量表達式中使用DataItem值
- 8. 表達結果未使用的警告,但不想使用它
- 9. 未聲明的變量,而已經宣佈
- 10. 不正確的JSHint警告「變量已定義,但從未使用」。
- 11. 變量X已被使用,它已經宣佈
- 12. Jasper iReport變量char的表達條件
- 13. 使用變量r的表達式
- 14. React-Native-Navigation:未定義已使用但尚未註冊
- 15. 未使用變量警告
- 16. 在正則表達式中使用的未知特殊變量
- 17. C#在數學表達式中使用未分配的變量
- 18. 條件表達式中的常量值
- 19. 警告:在條件表達式
- 20. 「結構」已宣告結構
- 21. p已經宣告錯誤
- 22. 如何將條件發送到使用lambda表達式的方法以使其尚未評估?
- 23. Trigger.io - 您已購買但尚未下載
- 24. XQuery變量尚未聲明
- 25. 指向一個結構尚未宣佈
- 26. 獲取未使用的變量警告
- 27. 警告:未使用的變量
- 28. python正則表達式使用變量代表表達式
- 29. jQuery變量內容未定義但尚未定義
- 30. LINQ表達式。從範圍引用的類型變量'p',但未定義
如果變量不需要使用下劃線https://play.golang.org/p/S9kzv_dBlk – pkuderov
複製的http://stackoverflow.com/questions/21743841/how-to-avoid-annoying-error-宣和 - 不使用的 - 從 - golang。有一個很好的解釋,爲什麼去語言創建者添加此檢查。 – pkuderov