Концепция: базовые типы
В Go у каждого типа есть базовый тип. Правила:
-
Для примитивов соответствующие базовые типы существуют сами по себе.
-
Для Pointer типа, определенного в стандартном пакете unsafe, его базовым типом является он сам, по крайней мере, мы можем так думать. Фактически, базовый тип unsafe.Pointer плохо документирован. Мы также можем думать, что базовым типом является *T, где T представляет собой произвольный тип. unsafe.Pointer также рассматривается как встроенный тип.
-
Базовым типом безымянного типа, который должен быть составным типом, является он сам.
-
В объявлении алиасного типа исходный тип и сам алиас имеют один и тот же базовый тип.
Полную версию статьи ты можешь найти по ссылке.