1 回答

TA贡献1811条经验 获得超5个赞
您使用了错误的格式字符串。%f用于扫描浮点数,但您的变量distance类型为int,因此您应该使用%d:
fmt.Scanf("%d", &distance)
或者将distance变量声明为浮点数,然后您可以使用%f:
var distance float64
fmt.Println("Enter the distance")
fmt.Scanf("%f", &distance)
笔记:
fmt.Scanf()返回成功扫描的项目数和可选错误。您应该习惯于处理 Go 中的错误,这会为您节省大量时间。
通过存储和打印 的返回值来最小化Scanf():
var distance int
fmt.Println("Enter the distance")
n, err := fmt.Scanf("%f", &distance)
fmt.Println(n, err)
印刷:
0 bad verb %f for integer
这会立即告诉您0已扫描项目并出现错误:bad verb %f for integer这几乎是不言自明的。
这也解释了为什么您总是看到0打印出的公里数:您的distance变量被初始化为0( 的零值int)并且它永远不会改变。
如果扫描成功,您将看到以下输出:
1 <nil>
这意味着成功扫描了一项(distance)并且没有错误。
如果您一次Scanf()调用扫描多个项目,则n可能大于1当然(例如fmt.Scanf("%f %d", &distance, &temp))。
- 1 回答
- 0 关注
- 291 浏览
添加回答
举报