提示
如果你是Windows系统,在使用 Scanf 时,有一个地方需要注意。看下面的代码:
for i := 0; i < 2; i++ {
var name string
fmt.Print("Input Name:")
n
, err := fmt.Scanf("%s", &name)
fmt.Println(n, err, name)
} 编译
、运行(或直接 go run ),输入:polaris回车。控制台内如下:
Input Name:polaris
1 <nil> polaris
Input Name:0 unexpected newline
为什么不是让输入两次?第二次好像有默认值一样。
同样的代码在Linux下正常。个人认为这是go在Windows下的一个bug,已经向官方提出:issue5391。
目前的解决方法是:换用Scanln或者改为Scanf(“%s\n”, &name)
End.