上一篇 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