
标准库bufio
bufio包,使用它可以简洁高效的处理输入和输出,其中最有用的特性是称为扫描器的类型Scanner,它可以读取输入,以行或者单词为单位断开,这是处理以行为单位的输入内容最简单方式
1.bufio.NewScanner
input := bufio.NewScanner(os.Stdin)
扫描器从程序的标准输入进行读取,每一次调用Input.Scan()读取下一行,并且将结尾的换行符去掉,通过调用input.Text()来获取读到的内容,Scan函数在读到新行的时候返回true,没有内容返回false
func main() { counts := make(map[string]int) input := bufio.NewScanner(os.Stdin) for input.Scan() { counts[input.Text()]++ if input.Text() == "END" { break } } for line, n := range counts { if n > 1 { fmt.Printf("%d\t%s\n", n, line) } } }go
2.bufio.NewReader
在下面的循环中,不断从标准输入中读取字符
in := bufio.NewReader(os.Stdin) for { r, _, err := in.ReadRune() if err == io.EOF { break //结束读取 } if err != nil { return fmt.Errorf("read failed: %v", err) } }