Как указать поле, которое мы хотим использовать из структуры?
У меня есть структура, состоящая из нескольких полей одного типа.
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 раза, только для одной изменяющейся строки. Я пробовал вещи с отражать пакет. Я думаю, что это опасная идея.
1 ответ
В вашей ситуации я бы использовал map вместо struct, но если struct действительно требуется, вы можете использовать отражающий пакет.
v := reflect.ValueOf(x)
for i := 0; i < v.NumField(); i++ {
fmt.Printf("%v", v.Field(i).Interface())
}