我有一个由多个相同类型字段组成的结构。
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次。 我尝试了反射包。我认为进入其中是一个危险的想法。
答案 0 :(得分:0)
在您的情况下,我将使用map而不是struct,但是如果确实需要struct,则可以使用反射包。
v := reflect.ValueOf(x)
for i := 0; i < v.NumField(); i++ {
fmt.Printf("%v", v.Field(i).Interface())
}