type MyInt int; var x MyInt = 5; var y int = 3; fmt.Println(x + y)?Не скомпилируется: MyInt и int - разные именованные типы. В Go нельзя смешивать их в выражениях без явного приведения.
type MyInt int создаёт новый тип, а не псевдоним. Это защита от случайного смешивания семантически разных величин (например, индекс и длина).
type MyInt int
var x MyInt = 5
var y int = 3
fmt.Println(x + y) // ошибка компиляции
fmt.Println(x + MyInt(y)) // OK
fmt.Println(int(x) + y) // OK
fmt.Println(x + 3) // OK: 3 - нетипизированная константа
Константа 3 может использоваться с MyInt, потому что до присваивания или сравнения с типизированным значением она не имеет конкретного типа. С переменной y int такого не происходит.