РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
17 of 1593 menu

Объявление типа type

Объявление типа type в Go позволяет создавать пользовательские типы данных на основе существующих типов. Это мощный механизм для улучшения читаемости кода и добавления специфического поведения. Новый тип наследует структуру базового типа, но считается отдельным типом, что предотвращает неявное преобразование. В качестве базового могут выступать встроенные типы, структуры, интерфейсы или даже другие пользовательские типы.

Синтаксис

type NewType BaseType

Где NewType - имя нового типа, BaseType - существующий тип, на основе которого создается новый тип.

Пример с базовым типом

Создадим тип MyString на основе string и используем его в программе:

package main import "fmt" type MyString string func main() { var s MyString = "Hello, Go" fmt.Println(s) }

Результат выполнения кода:

"Hello, Go"

Здесь тип MyString объявлен на основе string. Переменная s имеет тип MyString и не может быть напрямую присвоена строке без явного преобразования.

Пример с методом

Создадим тип Counter на основе int и добавим ему метод для увеличения значения:

package main import "fmt" type Counter int func (c *Counter) Increment() { *c++ } func main() { var c Counter = 5 c.Increment() fmt.Println(c) }

Результат выполнения кода:

6

Метод Increment привязан к типу Counter и может изменять его значение.

Пример со структурой

Объявим структуру Person и создадим новый тип Employee на её основе:

package main import "fmt" type Person struct { Name string Age int } type Employee Person func main() { var e Employee = Employee{Name: "Alice", Age: 30} fmt.Println(e) }

Результат выполнения кода:

{Alice 30}

Тип Employee является отдельным типом, но имеет ту же структуру, что и Person.

Пример с интерфейсом

Создадим новый тип Stringer на основе интерфейса fmt.Stringer:

package main import "fmt" type Stringer fmt.Stringer type MyInt int func (m MyInt) String() string { return fmt.Sprintf("value: %d", m) } func main() { var s Stringer = MyInt(42) fmt.Println(s.String()) }

Результат выполнения кода:

"value: 42"

Тип Stringer является псевдонимом для интерфейса fmt.Stringer и может содержать любой тип, реализующий метод String.

Смотрите также

  • объявление переменных var,
    которое позволяет создавать именованные переменные
  • константы const,
    которые определяют неизменяемые значения
  • функции func,
    которые определяют блоки кода с параметрами и возвратом
  • пакеты package,
    которые организуют код в модули и пространства имен
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить