go语言提供的“fmt”包的标准输入
fmt.Scanf("%d", &a)
fmt.Scan(&a)默认不接收空格、回车
使用byte,%c按字符输入,可以接收空格和回车,实现输入一行功能。
b :=make([]byte, 18)
for i := 0; ; i++ {
fmt.Scanf("%c", &b[i])
fmt.Print(string(b[i]))
if b[i] == '\n' {
break
}
}
刷题使用bufio包下得NewScanner对象,使用NewReader会有问题。
sca := bufio.NewScanner(os.Stdin)
for sca.Scan() { //读一行
s := strings.Split(sca.Text(), " ") //转成string,在切分
for i := range s {
fmt.Print(s[i], ",")
}
}
NewReader刷题时对输入有一定问题。手动敲回车输入时可以正常使用。使用bufio包下的ReadLine()函数能接收一行数据,不包括'\n'
for i := 0; i < 3; i++ {
rd := bufio.NewReader(os.Stdin)
t, _, _ := rd.ReadLine()
fmt.Println(string(t))
}
使用bufio包下的ReadString('\n')能遇到'\n'结束,接收'\n'
for i := 0; i < 3; i++ {
rd := bufio.NewReader(os.Stdin)
//t, _, _ := rd.ReadLine()
t, _ := rd.ReadString('\n')
fmt.Println(string(t))
}
输入遇到文件结束符EOF结束。先编译在运行exe,在goland里运行ctr+z不行。
var input string
for {
_, _ = fmt.Scan(&input)
fmt.Println(input)
if err == io.EOF {
fmt.Println(err) //输出EOF
break
}
}