cpp

Вложенные структуры

Структуры можно вкладывать. При обращении к полю вложенной структуры дополнительно указывается название структуры родителя. В качестве примера объявим структуру Point (точка), а затем используем ее для описания координат прямоугольника (листинг 11.4).

Листинг 11.4. Использование вложенных структур

package main

import "fmt"

type Point struct {
   X, Y int
}
type Rect struct {
   TopLeft, BottomRight Point
}

func main() {
   rect := Rect{Point{10, 20}, Point{30, 40}}
   fmt.Println(rect) // {{10 20} {30 40}}
   rect.TopLeft.X = 0
   rect.TopLeft.Y = 20
   rect.BottomRight.X = 100
   rect.BottomRight.Y = 150
   fmt.Println(rect.TopLeft.X, rect.TopLeft.Y)         // 0 20
   fmt.Println(rect.BottomRight.X, rect.BottomRight.Y) // 100 150
}

Можно также создавать анонимные вложенные структуры:

type MyStruct struct {
   a int
   b struct {
      c, d int
   }
}

Инициализация и доступ к полям осуществляется следующим образом:

obj := MyStruct{10, struct {
   c, d int
}{30, 40}}
fmt.Println(obj)     // {10 {30 40}}
fmt.Println(obj.a)   // 10
fmt.Println(obj.b.c) // 30
fmt.Println(obj.b.d) // 40

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp