-2

我有一个由多个相同类型的字段组成的结构。

type test struct{
       A int
       B int
       C int
}

我想将一个功能对三个字段执行相同的操作,但我只想每次都做一个。

function something (toto test, cond int) {
    if (cond == 1){
        // then we will use A for the rest of the function
    }else if (cond == 2) {
        // then we use B etc....
    } ... 

    for mail, v := range bdd {
        if _, ok := someMap[v.A]; !ok {       // use v.A or V.B or V.C     
            delete(bdd, mail)
        }
        ...
    }

    ...
}

该函数真的很长,我很困扰我将代码复制了 3 次,只是为了改变一行。我尝试了反射包。我认为这是一个危险的想法。

4

1 回答 1

0

在您的情况下,我会使用 map 而不是 struct,但如果确实需要 struct,您可以使用反射包。

v := reflect.ValueOf(x)

for i := 0; i < v.NumField(); i++ {
    fmt.Printf("%v", v.Field(i).Interface())
}
于 2018-11-23T14:38:19.663 回答