Шаг 93.
Язык программирования Go.
Пользовательский тип на основе структур

    На этом шаге мы рассмотрим создание пользовательского типа на основе структур в Go.

    Простейшие пользовательские типы в программах на языке Go основываются на встроенных типах, например инструкция type Integer int создаст пользовательский тип Integer, к которому можно будет добавить собственные методы.

    Пользовательские типы могут также создаваться на основе структур, используемых для агрегирования и встраивания значений. Это особенно удобно, когда эти значения, называемые полями, имеют разные типы и не могут храниться в общем срезе (если только не использовать срез типа []interface{}).

    Структуры в языке Go ближе к структурам в языке C, чем в C++ (например, они не являются классами), но более удобны в использовании благодаря поддержке встраивания.

    Рассмотрим несколько примеров, демонстрирующих структуры.

точки := [][2]int{{4,6}, {}, {-7, 11}, {15, 17}, {14, -8}}
for _, точка := range точки{
    fmt.Printf("(%d, %d) ", точка[0], точка[1])
}

    Переменная точки – это срез с массивами типа [2]int, поэтому для получения каждой координаты приходится использовать оператор индексирования []. Элемент {} – это то же самое, что и {0, 0}, благодаря автоматической инициализации переменных в языке Go. Такой подход вполне пригоден для небольших объемов простых данных, но существует более удобный способ реализовать то же самое – с помощью анонимной структуры.

координаты:= []struct{ x, y int }{{4,6}, {}, {-7, 11}, {15, 17}, {14, -8}}
for _, точка := range координаты {
   fmt.Printf("(%d, %d) ", точка.x, точка.y)
}

    Архив с примером можно взять здесь.

    Переменная координаты – это срез со структурами struct{ x, y int}. Сама структура не имеет имени, но в программном коде можно обращаться к ее полям по их именам.

    На следующем шаге мы будем рассматривать агрегирование и встраивание структур в языке Go.


Предыдущий шаг Содержание Следующий шаг