Зарегистрируйтесь, чтобы продолжить обучение

Пользовательские типы Основы Go

В Go можно объявить алиас на существующий тип данных для выразительности и абстракции. Например, тип byte из модуля "строки" — это алиас uint8. Алиас объявляется через ключевое слово type:

type NumCount int

func main() {
    nc := NumCount(len([]int{1, 2, 3}))

    fmt.Println(nc) // 3
}

Алиас можно конвертировать в оригинальный тип и обратно:

type errorCode string

func main() {
    ec := errorCode("internal")

    fmt.Println(ec) // internal

    fmt.Println(string(ec)) // internal
}

Также у алиасов могут быть методы. Объявление метода происходит так же, как и со структурами:

type counter int


// передается указатель, чтобы можно было изменить состояние счетчика "c"
func (c *counter) inc() {
    *c++
}

func main() {
    c := counter(0)
    (&c).inc() // передается указатель на счетчик &c, так как функция "inc()" работает с указателями
    (&c).inc()

    fmt.Println(c) // 2
}

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»