为什么我使用:
var n int
a, _ := fmt.Scanf("%d",&n)
然后a == 1
,n
已通过输入更改了其值。
答案 0 :(得分:7)
fmt.Scanf()
返回已成功扫描的项目数:
Scanf扫描从标准输入读取的文本,将连续的空格分隔值存储到由格式确定的连续参数中。 返回成功扫描的项目数。如果小于参数数量,则错误将报告原因。
因此,如果您的输入是适合int
的有效整数,fmt.Scanf()
将成功解析它并将其存储在n
中,因此它将返回1。
如果您输入了无效的数字(例如string
值"a"
),则扫描不会成功,因此会返回0
以及非nil
错误,就像在这个例子中一样:
var n int
a, err := fmt.Sscanf("a", "%d", &n)
fmt.Println(a, err)
哪些输出(在Go Playground上尝试):
0 expected integer