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

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

打印缺失值

打印缺失值

Go
夢(mèng)里花落0921 2022-08-01 15:17:00
使用Go,我正在嘗試將值從main發(fā)送到函數(shù)。我想檢查發(fā)送到函數(shù)的任何參數(shù)是否為空。如果有任何缺失值,我想打印“參數(shù)值”為空。如果有多個(gè)參數(shù)為空,我也想打印出來(lái)。如果正確給出了所有參數(shù),則返回該值。func FederationValidarator(a string, b string) (string, string) {    // var Messages []string    rArray := [2]string{a, b}    // i :=0    for i := 0; i < len(rArray); i++ {        if rArray[i] != "" {            fmt.Println("Nothing is empty")        } else {            // var Messages []string            fmt.Println("%s is Missing")        }    }    return a, b}func main() {    a, b := FederationValidarator("", "world")    fmt.Println(a)    fmt.Println(b)}如何編碼以打印缺失值?我想得到以下輸出。結(jié)果:%s is MissingNothing is emptyworld預(yù)期輸出:a is Missingworld
查看完整描述

2 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

無(wú)法獲取參數(shù)名稱(chēng)(例如 ),有關(guān)詳細(xì)信息,請(qǐng)參閱獲取方法參數(shù)名稱(chēng)。a


如果需要參數(shù)名稱(chēng),請(qǐng)將參數(shù)包裝到結(jié)構(gòu)中,即可獲取字段的名稱(chēng)。您可以使用反射來(lái)循環(huán)訪(fǎng)問(wèn)字段,并獲取其值和名稱(chēng)。


例如:


type Param struct {

    A string

    B string

    C string

}


func CheckValues(p Param) {

    v := reflect.ValueOf(p)


    t := v.Type()

    for i := 0; i < v.NumField(); i++ {

        name := t.Field(i).Name

        if v.Field(i).IsZero() {

            fmt.Printf("%s is empty\n", name)

        } else {

            fmt.Printf("%s is NOT empty\n", name)

        }

    }

}

測(cè)試它:


p := Param{"", "world", ""}

CheckValues(p)

輸出(在Go Playground上嘗試):


A is empty

B is NOT empty

C is empty

此解決方案的一個(gè)非常好的屬性是它不依賴(lài)于實(shí)際的參數(shù)類(lèi)型。您可以將任何結(jié)構(gòu)值傳遞給它,它將繼續(xù)工作。此外,它還處理“所有”字段類(lèi)型,而不僅僅是字符串。


因此,將簽名修改為:


func CheckValues(p interface{})

您還可以傳遞匿名結(jié)構(gòu),而不僅僅是定義類(lèi)型的值:


a, b, c, d := "", "world", 0, 3


CheckValues(struct {

    A string

    B string

    C int

    D int

}{a, b, c, d})

這將輸出(在Go Playground上嘗試):


A is empty

B is NOT empty

C is empty

D is NOT empty


查看完整回答
反對(duì) 回復(fù) 2022-08-01
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

此代碼是為了匹配您期望的結(jié)果。但這不是檢查參數(shù)名稱(chēng)的正確方法。


func FederationValidarator(a string, b string) (string, string) {

    

    rArray := [2]string{a, b}

    

    for i := 0; i < len(rArray); i++ {

        if string(rArray[i]) == "" {

            fmt.Printf("%s is Missing\n", rArray[i]) // %s is empty string, Then nothing will appear.

        } else {                        

           fmt.Println(rArray[i])

        }

    }    

    return a, b

}

 

func main() {

    _, _ = FederationValidarator("", "world")

}


查看完整回答
反對(duì) 回復(fù) 2022-08-01
  • 2 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專(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)