码迷,mamicode.com
首页 > 其他好文 > 详细

Go bufio库

时间:2018-06-29 22:26:59      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:main   elm   单词   ann   strong   utf-8 编码   col   读取内容   als   

bufio.Scanner

bufio使处理输入和输出方便又高效。Scanner类型是该包最有用的特性之一,它读取输入并将其拆成行或单词;通常是处理行形式的输入最简单的方法。该变量从程序的标准输入中读取内容。每次调用input.Scanner,即读入下一行,并移除行末的换行符;读取的内容可以调用input.Text()得到。Scan函数在读到一行时返回true,在无输入时返回false

使用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()获取到。

Scanner.Scan方法默认是以换行符\n,作为分隔符。如果你想指定分隔符,Go语言提供了四种方法,ScanBytes(返回单个字节作为一个 token), ScanLines(返回一行文本), ScanRunes(返回单个 UTF-8 编码的 rune 作为一个 token)和ScanWords(返回通过“空格”分词的单词)。 使用方式:

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

Go bufio库

标签:main   elm   单词   ann   strong   utf-8 编码   col   读取内容   als   

原文地址:https://www.cnblogs.com/vincenshen/p/9245502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!