1 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
如果稍微更改一下代碼,您會(huì)發(fā)現(xiàn)它strconv.Atoi(input)返回了一個(gè)錯(cuò)誤。我希望您現(xiàn)在已經(jīng)學(xué)到了關(guān)于 Go 如何進(jìn)行錯(cuò)誤處理的重要一課。
錯(cuò)誤是:strconv.Atoi: parsing "1\n": invalid syntax
out, err := strconv.Atoi(input)
if err != nil {
fmt.Printf("Error is: %v\n", err)
}
解決此問題的一種方法是input使用strings.TrimSuffix()進(jìn)行修剪:
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter a number")
input, _ := reader.ReadString('\n')
input = strings.TrimSuffix(input, "\n")
fmt.Printf("Type of the entered value is %T\n", input)
fmt.Println(input)
out, err := strconv.Atoi(input)
if err != nil {
fmt.Printf("Error is: %v\n", err)
}
fmt.Printf("Type now is: %T\n", out)
fmt.Printf("Value now is %d\n", out)
fmt.Println(out)
您還可以使用Scanner,它不需要您刪除\n:
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("Enter a number")
scanner.Scan()
input := scanner.Text()
- 1 回答
- 0 關(guān)注
- 114 瀏覽
添加回答
舉報(bào)