為什么bufio.Scanner不提供HasNext()功能?
有沒有其他方法可以做到這一點?
uj5u.com熱心網友回復:
為什么 bufio.Scanner 沒有 HasNext 方法是標準庫設計者的問題。
以下是使用 HasNext 功能包裝 Scanner 的方法:
type ScannerPlus struct {
bufio.Scanner
scan bool
valid bool
}
func (s *ScannerPlus) Scan() bool {
if s.valid {
s.valid = false
return s.scan
}
return s.Scanner.Scan()
}
func (s *ScannerPlus) HasNext() bool {
if !s.valid {
s.valid = true
s.scan = s.Scanner.Scan()
}
return s.scan
}
uj5u.com熱心網友回復:
因為bufio.Scanner只是閱讀,而不是檢查是否還有更多閱讀。
對該
Scan方法的連續呼叫將遍歷檔案的“令牌”,跳過令牌之間的位元組。
令牌的規范由split型別為的函式定義SplitFunc;默認拆分函式將輸入分解為行終止的行
所以 Scanner 本身沒有“下一步”的概念。拆分函式有助于定義它,然后scanner.Scan() bool可以根據拆分函式判斷是否還有更多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362241.html
標籤:走
上一篇:通過PuTTY與TCP服務器通信
下一篇:使用結構陣列發出封送YAML
