Go bufio库
Posted vincenshen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go bufio库相关的知识,希望对你有一定的参考价值。
bufio.Scanner
bufio
包使处理输入和输出方便又高效。Scanner
类型是该包最有用的特性之一,它读取输入并将其拆成行或单词;通常是处理行形式的输入最简单的方法。该变量从程序的标准输入中读取内容。每次调用input.Scanner
,即读入下一行,并移除行末的换行符;读取的内容可以调用input.Text()
得到。Scan
函数在读到一行时返回true
,在无输入时返回false
。
使用DEMO:
func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG HIJKELM"), ) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes() } }
理解:对于Scanner.Scan方法,相当于其他语言的迭代器iterator,并把迭代器指向的数据存放到新的缓冲区里。新的缓冲区(token)可以通过scanner.Text()或者scanner.Bytes()获取到。
Scanner.Scan方法默认是以换行符
,作为分隔符。如果你想指定分隔符,Go语言提供了四种方法,ScanBytes(返回单个字节作为一个 token
), ScanLines(返回一行文本
), ScanRunes(返回单个 UTF-8 编码的 rune 作为一个 token
)和ScanWords(返回通过“空格”分词的单词
)。 使用方式:
func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG HIJKELM"), ) scanner.Split(ScanWords/*四种方式之一,你也可以自定义, 实现SplitFunc方法*/) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes() } }
结论:我们一般在读取数据到缓冲区时,且想要采用分隔符分隔数据流时,我们一般使用bufio.Scanner数据结构,而不使用bufio.Reader。
以上是关于Go bufio库的主要内容,如果未能解决你的问题,请参考以下文章