上一篇 Go聖經-學習筆記入門bufiogolang
下一篇 Go聖經-學習筆記入門bufio.Writer數據結構
由上篇文章《Go聖經-學習筆記入門bufio》,咱們能夠知道,bufio.Reader結構體中全部讀取數據的方法,都包含了delim分隔符,這個用起來很不方便,因此Google對此在go1.1版本中加入了bufio.Scanner結構體,用於讀取數據。學習
使用DEMO:編碼
func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG\nHIJKELM"), ) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes() } }
理解:對於Scanner.Scan方法,至關於其餘語言的迭代器iterator,並把迭代器指向的數據存放到新的緩衝區裏。新的緩衝區(token)能夠經過scanner.Text()或者scanner.Bytes()獲取到。.net
Scanner.Scan方法默認是以換行符\n
,做爲分隔符。若是你想指定分隔符,Go語言提供了四種方法,ScanBytes(返回單個字節做爲一個 token
), ScanLines(返回一行文本
), ScanRunes(返回單個 UTF-8 編碼的 rune 做爲一個 token
)和ScanWords(返回經過「空格」分詞的單詞
)。 使用方式:code
func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG\nHIJKELM"), ) scanner.Split(ScanWords/*四種方式之一,你也能夠自定義, 實現SplitFunc方法*/) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes() } }
結論:咱們通常在讀取數據到緩衝區時,且想要採用分隔符分隔數據流時,咱們通常使用bufio.Scanner數據結構,而不使用bufio.Reader。blog