Это объявление типа, точнее определение типа. Он создает новый тип, используя []byte
в качестве базового типа:
Определение типа создает новый отдельный тип с тем же базовым типом и операциями, что и данный тип, и привязывает к нему идентификатор.
Новые типы создаются, потому что они могут упростить многократное их использование, их идентификатор (их имя) может быть выразительным в других контекстах и, что наиболее важно, чтобы вы могли определять (прикреплять) к нему методы (вы не можете прикреплять методы к встроенные типы, а также анонимные типы или типы, определенные в других пакетах).
Эта последняя часть (присоединение методов) важна, потому что хотя вместо присоединения методов вы могли бы так же легко создавать и использовать функции, которые принимают «исходный» тип в качестве параметра, только типы с методами могут реализовывать интерфейсы, которые перечисляют («предписывают») эти методы, и, как упоминалось ранее, вы не можете присоединять методы к определенным типам, пока не создадите новый производный от них тип.
Например, тип []int
никогда не будет реализовывать sort.Interface
, необходимый для сортировки (по sort
package), поэтому создается новый тип sort.IntSlice
(то есть type IntSlice []int
), для которого нужные методы прикреплены, поэтому вы можете передать значение типа sort.IntSlice
в функцию sort.Sort()
, но не значение типа []int
. Поскольку sort.IntSlice
имеет базовый тип []int
, если у вас есть значение []int
, вы можете просто преобразовать его на sort.IntSlice
, если вы хотите отсортировать его, как в этом примере (попробуйте на Go Playground ):
is := []int{1,3,2}
sort.Sort(sort.IntSlice(is))
fmt.Println(is) // Prints: [1 2 3]
Когда вы создаете новый тип, «наследование» не происходит. Новый тип будет иметь 0 методов. Если вам нужна функциональность, похожая на наследование, вам следует проверить встраивание (в отношении типов структур ), и в этом случае тип внедрения также будет «иметь» методы встроенного типа.
person
icza
schedule
21.03.2018
struct
), не наследование и не псевдоним типа (что совершенно другое). Это скорее полная противоположность наследованию: послеtype X Y
тип X имеет структуру памяти Y, но ни один из методов Y. И сначала пройдите Tour of Go. - person Volker   schedule 21.03.2018