Golang: структура встраивания против "псевдонимов" - PullRequest
0 голосов
/ 25 апреля 2019

Я знаю о встраивании в структуру

type newType struct {someStruct}

Я знаю о псевдонимах типов:

go type newType = someStruct

Но есть ли практическая причина для использования

type newType someStruct

Чтоо примитивных типах?

type newType int

Какое название подходит для такого определения?

Ответы [ 2 ]

4 голосов
/ 25 апреля 2019

Наименование: Все фрагменты декларации типа .Одним из объявлений является псевдоним типа (тот, что с =).Остальные объявления являются определениями типа .В первом из этих определений используется структура со встроенным полем.

Код type newType someStruct полезен, когда требуется определить новый тип с тем же макетом памяти, что и некоторый другой тип структуры.Это может быть связано с тем, что программист хочет использовать разные методы в одной и той же структуре памяти.

Код type newType int полезен для определения типа с семантическим отличием от int или для присоединения методов к примитивному типу.См. отражение. Вид для одного примера.

0 голосов
/ 25 апреля 2019

Встраивание в структуру и псевдонимы


Вы объединяете различные конструкции.

Для определения встраивания структуры см. Спецификация языка программирования Go .


Вот объяснение и обоснование псевдонимов типов Go.

Примечания к выпуску Go 1.9 (выпущено в 2017/08/24)

Изменения в языке

Go теперь поддерживает типпсевдонимы для поддержки постепенного восстановления кода при перемещении типа между пакетами.Документ с псевдонимом типа и , статья о рефакторинге , подробно освещают проблему.Вкратце, объявление псевдонима типа имеет вид:

type T1 = T2

В этом объявлении вводится псевдоним T1 - альтернативное написание - для типа, обозначенного T2;то есть T1 и T2 обозначают один и тот же тип.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...