package main import "fmt" type Person struct { Id int Name string Address string } type Account struct { Id int Name string Cleaner func(string) string Owner Person Person } func main() { // foo1() foo2() } func foo1() { // полное объявление структуры var acc Account = Account{ Id: 1, Name: "rvasily", Person: Person{ Address: "Москва", }, } // fmt.Printf("%#v\n", acc) // короткое объявление структуры acc.Owner = Person{2, "Romanov Vasily", "Moscow"} // fmt.Printf("%#v", acc) fmt.Println(acc.Address) } // методы структур // не изменяет оригинальной структуры, для который вызван // нет смысла func (p Person) UpdateName(name string) { p.Name = name } // изменяет оригинальную структура func (p *Person) SetName(name string) { p.Name = name } func foo2() { pers := Person{1, "Vasily", "Moscow"} pers.SetName("Vasily Romanov") fmt.Printf("updated person: %#v\n", pers) }