Go聖經-學習筆記入門bufio.Scanner

上一篇 Go聖經-學習筆記入門bufiogolang

下一篇 Go聖經-學習筆記入門bufio.Writer數據結構

由bufio.Reader引出的問題

由上篇文章《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.Readerblog

相關文章
相關標籤/搜索