В Go можно объявить как собственный тип, так и создать алиас на существующий. Для этого используется ключевое слово type
.
*type NumCount int
- объявляется новый, пользовательский, тип данных NumCount
*type NumCount = int
- создается алиас, псевдоним на существующий тип
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
}

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