Шаг 87.
Язык программирования Go.
Типы с проверкой

    На этом шаге рассмотрим типы с проверкой в Go.

    Для многих простых пользовательских типов проверка просто не нужна. Например, в программе может иметься тип Point { X, Y int } , для которого любые значения полей X и Y будут допустимыми. Кроме того, поскольку компилятор Go гарантирует инициализацию всех переменных (включая поля структур) соответствующими нулевыми значениями, это существенно снижает потребность в явных конструкторах.

    В ситуациях, когда нулевые значения не подходят для инициализации, можно создать функцию-конструктор. Go не поддерживает неявного вызова конструкторов, поэтому функция-конструктор должна вызываться явно. Для этого следует описать тип как не допускающий инициализацию нулевым значением и реализовать одну или более функций-конструкторов для создания допустимых значений.

    Аналогичный подход можно использовать для организации проверки значений полей. Такие поля можно сделать неэкспортируемыми (частными) и реализовать методы доступа к ним, в которых выполнять необходимые проверки1.

    Задание 1. Вывести широту и долготу Кургана и Москвы (рис.1):


Рис.1. Результат работы приложения

Раскрыть/скрыть решение и комментарии.


1 В языке Go неэкспортируемыми (то есть видимыми только внутри пакета, где они объявлены) являются идентификаторы, начинающиеся с буквы в нижнем регистре, а экспортируемыми (видимыми в любом пакете, импортирующем данный пакет) являются идентификаторы, начинающиеся с буквы в верхнем регистре.

    На следующем шаге рассмотрим интерфейсы в Go.


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