2 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
只需閱讀 Scan 的文檔 - https://pkg.go.dev/fmt#Scan
它返回成功讀取參數(shù)的數(shù)量和一個(gè)錯(cuò)誤。在您的情況下,輸入被映射到一個(gè) int 類(lèi)型的變量,因此如果用戶輸入一個(gè)字符串,它將返回 0 和一個(gè)錯(cuò)誤。否則它將返回 1 并且錯(cuò)誤應(yīng)該為零。你可以檢查一下。
n, err := fmt.Scan(&option)
if n != 1 || err != nil {
// print error and go back
}

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
一種常見(jiàn)的方法是嘗試進(jìn)行轉(zhuǎn)換并查看它是否成功。
optionInt, err := strconv.Atoi(option) // Assuming option is of type string
if err != nil {
log.Printf("String '%s' cannot be converted to type int: %v", option, err)
os.Exit(1)
}
log.Printf(`optionInt is %d.`, optionInt)
如果您只對(duì)轉(zhuǎn)換為一種類(lèi)型感興趣,這是一種很好的方法。否則,事情可能很快就會(huì)變得更加復(fù)雜,使用諸如詞法分析器和解析器之類(lèi)的結(jié)構(gòu),但這將保證更多關(guān)于您正在嘗試完成的信息的信息。
- 2 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報(bào)