命令记不住

登陆

标准库 bufio

标准库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)
		}
	}
推荐阅读