第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Go 中,如何驗(yàn)證用戶輸入的數(shù)據(jù)類(lèi)型是否與代碼的數(shù)據(jù)類(lèi)型匹配?

在 Go 中,如何驗(yàn)證用戶輸入的數(shù)據(jù)類(lèi)型是否與代碼的數(shù)據(jù)類(lèi)型匹配?

Go
翻過(guò)高山走不出你 2022-10-24 16:56:47
我是 Go 新手。目前,我正在 Go 中創(chuàng)建一個(gè)菜單,我想驗(yàn)證用戶輸入的數(shù)據(jù)類(lèi)型是否與代碼中定義的變量的數(shù)據(jù)類(lèi)型相匹配。到目前為止,我的部分代碼如下所示:package mainimport (    "fmt"    "reflect")var option int // The variable is declared outside of the main().func general_menu() {    fmt.Println(".......................General Menu..................................")        fmt.Println()        fmt.Println("Calculator..........................................................1")        fmt.Println("Linear algebra package..............................................2")        fmt.Println("Language change.....................................................9")        fmt.Println("Exit...............................................................10")        fmt.Println()        fmt.Println("Choose an option from the menu.")        fmt.Println()        fmt.Scan(&option)        fmt.Println()        if (option != 1 && option != 2 && option != 9 && option != 10)||reflect.TypeOf(option)!=int{            fmt.Println("Wrong option input. Please, try again.")            fmt.Println()            general_menu()        }}我知道這不起作用,而且我知道“int”不能用作“if”條件的一部分。對(duì)于解決此問(wèn)題的正確方法的任何建議,我將不勝感激。謝謝。編輯:根據(jù)貢獻(xiàn)者的建議,我添加了更多代碼。編輯:根據(jù)提供的答案,我嘗試實(shí)現(xiàn)一個(gè)函數(shù),但語(yǔ)法仍然不正確:func check_integers_are_not_string(x int) bool {    change := strconv.Itoa(x)    if change != nil {        return true    } else {        return false    }} // This function returns a true boolean value if conversion from int to string was possible, meaning that the entered value is a string.
查看完整描述

2 回答

?
函數(shù)式編程

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 

}


查看完整回答
反對(duì) 回復(fù) 2022-10-24
?
躍然一笑

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)于您正在嘗試完成的信息的信息。


查看完整回答
反對(duì) 回復(fù) 2022-10-24
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)