golang中的input.scan()的关闭

原文

在go程序设计语言中有这样一段代码

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	counts := make(map[string]int)
	input := bufio.NewScanner(os.Stdin)
	for input.Scan() {
		counts[input.Text()]++
		}
	}
	fmt.Scan()
	fmt.Println(counts)
	for line, n := range counts {
		if n > 1 {
			fmt.Printf("%d\t%s\n", n, line)
		}
	}
}


启动后不会停止。打开源码可以看到注释
在这里插入图片描述
只有遇到EOF和错误的时候才会停止。
所以需要我们手动引发EOF
在windows下可以使用ctrl + z,在linux下可以使用ctrl + d,原因是这样的

或者在代码中添加条件跳出循环

···
	for input.Scan() {
			counts[input.Text()]++
			if input.Text() == "" {
				break
			}
		}
···

这样在空行就可以停止循环

你可能感兴趣的:(#,golang,golang,开发语言,后端)