Это по замыслу.Язык программирования Go требует назначения между различными типами для явного преобразования.
Может показаться, что вы просто присваиваете псевдониму строковый тип, чтобы иметь другое имя, но технически вы создаете новый тип с типом хранения строки, в этом есть небольшая разница.
Способ определения псевдонима в Go ( с 1.9 ) несколько отличается, есть знак равенства.
type abc = string
Если есть какая-то путаница относительно того, почему Go не имеет неявных преобразований, это может показаться глупым, когда вы имеете дело только с базовым строковым типом, но с более сложнымтипы, это гарантирует, что программист знает, просто посмотрев на код, что происходит преобразование.
Это особенно полезно при отладке приложения, особенно при преобразовании между числовыми типами, чтобы знать, когда происходит преобразование, так что если есть усечение битов, например, от uint64
до uint32
, это очевидночтобы увидеть, где это происходит.
https://tour.golang.org/basics/13