Дело в том, что если вы хотите обнулить только несколько полей, это более читабельно делать без функции, например,
app := Application{}
app.FullName, app.ActualAddress = "", ""
Если вы хотите создать для нее функцию, хотя бы используйтепараметр variadic, поэтому его проще вызывать:
func zeroFields(application *Application, fields ...string) {
// ...
}
Итак, вызывая его:
zeroFields(&app, "FullName", "ActualAddress")
Да, для этого нужно будет использовать отражение, поэтому оно медленнее, чем могло бы быть,и подвержен ошибкам (опечатки могут быть обнаружены только во время выполнения).Если вы хотите избежать использования отражения, передайте адрес полей:
func zeroFields(ps ...*string) {
for _, p := range ps {
*p = ""
}
}
Таким образом, у вас есть гарантия времени компиляции, что вы правильно вводите имена полей и что они имеют тип string
.
Называя это:
zeroFields(&application.FullName, &application.ActualAddress)
Попробуйте это на игровой площадке Go .