这是一种“错误”的书写方式
观察下面两种方式,有什么不同?
fmt.Scan("%d", &num)
fmt.Scan(&num)
第一种是错误的,其使用 Scan 获取输入,但是却采用了 Scanf 的写法;第二种方式是正确的。
在这两个示例中,有一个关键区别:fmt.Scan 函数不使用格式字符串,而 fmt.Scanf 函数使用格式字符串。但是我们在第一个示例中使用了 fmt.Scan,并提供了一个格式字符串,这是不正确的。下面是正确的使用方法:
使用 fmt.Scan:
var num int
fmt.Scan(&num)
fmt.Scan 会从输入中读取以空格或换行符分隔的值,并将其存储在提供的变量中。在这个例子中,fmt.Scan 将尝试从输入中读取一个整数,并将其存储在 num 变量中。您不需要提供格式字符串。
使用 fmt.Scanf:
var num int
fmt.Scanf("%d", &num)
fmt.Scanf 函数使用格式字符串来读取输入。在这个例子中,“%d” 格式字符串表示我们期望从输入中读取一个整数。fmt.Scanf 将按照格式字符串中指定的格式读取输入,并将读取到的整数存储在 num 变量中。
总结一下,第一个示例中的代码是不正确的,因为 fmt.Scan 函数不需要格式字符串。正确的做法是使用 fmt.Scan(&num)
或 fmt.Scanf("%d", &num)
。