Создайте вспомогательную функцию, которая принимает Object
, изменяет ее code
и возвращает новый Object
:
func withCode(obj Obj, code string) Obj {
obj.code = code
return obj
}
Обратите внимание, что withCode
принимает значение без указателя, поэтомуObject
вы пройдете не будут изменены, только локальная копия.
И с помощью этого ваша задача:
var slc = []Obj{
withCode(ValidObject, "Other value"),
withCode(ValidObject, "Yet another value"),
}
fmt.Println(slc)
Вывод (попробуйте на Go Playground ):
[{AK93-KADJ9-92J76 Other value MSLA-923-OKSW}
{AK93-KADJ9-92J76 Yet another value MSLA-923-OKSW}]
Этот помощник withCode
может даже быть методом (а не функцией).
Обратите внимание, что если вам нужно иметь варианты многих полей, он, вероятно, будетЛучше добавить их как методы, чтобы можно было объединять вызовы.
Например:
func (o Obj) withCode(code string) Obj {
o.code = code
return o
}
func (o Obj) withSsid(ssid string) Obj {
o.ssid = ssid
return o
}
func (o Obj) withMit(mit string) Obj {
o.mit = mit
return o
}
И затем использовать его:
var slc = []Obj{
ValidObject.withCode("code2").withSsid("ssid2"),
ValidObject.withMit("mit2").withSsid("ssid3"),
}
fmt.Println(slc)
Вывод (попробуйтена игровой площадке Go ):
[{ssid2 code2 MSLA-923-OKSW} {ssid3 SKO-120O mit2}]