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 關注
- 287 瀏覽
添加回答
舉報