发现了go的一个bug: fmt.scanf("%s", &str)不能接受中文,只能接受ascii码.见下列代码:
package main
import (
"fmt"
)
func main() {
var (
a int
f float32
str string
)
fmt.Println("准备录入数据: ")
fmt.Scanf("%d,%f,%s", &a, &f, &str)
fmt.Println("输出录入结果: ")
fmt.Println(a, f, str)
}
如果输入 10,34.12,string
会正常输出10,34.12, string
但如果输入10,34.12,str中国
则只能输出10,34.12,str
也就是说: fmt.Scanf("%s",str)是不能直接输入utf-8 string的.
有疑问加站长微信联系(非本文作者)

备注:在ubuntu OS上运行正常,但是在win 7 64bit OS上不行.看起来是由于win7 os的cmd.exe不支持utf-8引起的,.中文win7 64bit os 的cmd window用的是gbk编码,不支持utf-8编码.
可以看下这里设置 http://studygolang.com/wiki/cmd_zh_code
用 chcp 65001只能解决utf-8字符显示的问题,但是输入还是不行.
我也发现同样的问题,请问楼主,有解决办法么?
在windows下,无论是Scanf还是bufio,的确是无法读入从键盘输入的中文。这个亲测,暂时没有找到解决办法。 但是同样的代码,在linux下却是ok的。 可能跟windows cmd/console字符集是GBK有关系