| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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)
- }
|