亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打印缺失值

打印缺失值

Go
夢里花落0921 2022-08-01 15:17:00
使用Go,我正在嘗試將值從main發送到函數。我想檢查發送到函數的任何參數是否為空。如果有任何缺失值,我想打印“參數值”為空。如果有多個參數為空,我也想打印出來。如果正確給出了所有參數,則返回該值。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)}如何編碼以打印缺失值?我想得到以下輸出。結果:%s is MissingNothing is emptyworld預期輸出:a is Missingworld
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

無法獲取參數名稱(例如 ),有關詳細信息,請參閱獲取方法參數名稱。a


如果需要參數名稱,請將參數包裝到結構中,即可獲取字段的名稱。您可以使用反射來循環訪問字段,并獲取其值和名稱。


例如:


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)

        }

    }

}

測試它:


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

CheckValues(p)

輸出(在Go Playground上嘗試):


A is empty

B is NOT empty

C is empty

此解決方案的一個非常好的屬性是它不依賴于實際的參數類型。您可以將任何結構值傳遞給它,它將繼續工作。此外,它還處理“所有”字段類型,而不僅僅是字符串。


因此,將簽名修改為:


func CheckValues(p interface{})

您還可以傳遞匿名結構,而不僅僅是定義類型的值:


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


查看完整回答
反對 回復 2022-08-01
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

此代碼是為了匹配您期望的結果。但這不是檢查參數名稱的正確方法。


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")

}


查看完整回答
反對 回復 2022-08-01
  • 2 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號