@to_east

Инициализация встраиваемой структуры?

Всем привет!
Сразу код приведу, потом разбор:
package main

import "fmt"

type Parent struct {
    foo int
}

type Child struct {
    Parent
    bar int
}

func main() {
    var parent = &Parent{ foo: 12 }
    var child = &Child{ parent, bar: 111 }
    child.Parent.foo++
    fmt.Println(parent.foo) // parent.foo should be 13
}

Как правильно инициализировать структуру Child, но что бы еще и иметь возможность
изменять поле foo объекта parent через child.
Выше изложенный код выводит ошибку инициализации:
C:\Windows\system32\cmd.exe /c (go run test1.go ^& pause)
# command-line-arguments
.\test1.go:18: mixture of field:value and value initializers
Для продолжения нажмите любую клавишу . . .
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@to_east Автор вопроса
Похоже что нашел решение, но неуверен что оно правильное, код:
package main


import "fmt"


type Parent struct {
    foo int
}

type Child struct {
    Parent *Parent
    bar int
}

func main() {
    var parent = &Parent{ foo: 12 }
    var child = &Child{ Parent: *&parent, bar: 111 }
    child.Parent.foo++
    fmt.Println(&parent.foo, &child.Parent.foo)
    fmt.Println(child.Parent.foo, parent.foo)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы