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
}
}



