Скопируйте одну структуру в другую
Есть две структуры:
type Foo struct {
A string
B int
}
type Bar struct {
A string
B int
}
Как скопировать одну в другую? Я хочу скопировать одну структуру в другую, без reflect и без непосредственного копирования:
foo := Foo{
A: "a",
B: 1,
}
bar := Bar{
A: foo.A,
B: foo.B,
}
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
можно использовать "наследование" структур.
type Foo struct {
A string
B int
}
type Bar struct {
Foo
}
func main() {
foo := Foo{
A: "a",
B: 1,
}
bar := Bar{foo}
fmt.Println(foo)
fmt.Println(bar)
}
теперь структура Bar содержит все из структуры Foo. т.о. инициализировать одну иожно через другую, как в примере выше
UPDATE если структуры отличаются полями, то вот решение
type Foo struct {
A string
B int
}
type Bar struct {
Foo
C string
}
func main() {
foo := Foo{
A: "a",
B: 1,
}
bar := Bar{foo, "my custom field"}
foo2 := bar.Foo
fmt.Println(foo)
fmt.Println(bar)
fmt.Println(foo2)
}