Псевдоним и свой тип в Go
Свой тип без знака равенства не смешивается
с исходным без преобразования, а псевдоним
смешивается. Одна и та же основа вроде
float64 может дать либо новую
разновидность для методов, либо лишь другое
написание того же типа.
Попробуем положить дробное число в переменную своего типа температуры без приведения:
type Celsius float64
func main() {
x := 21.5
var t Celsius = x
}
Такой код не собирается: x это
float64, а t ждет Celsius.
Нужно явное преобразование или литерал
с приведением, как вы уже делали с методами
на Celsius.
Сравним с вторым именем для той же основы, где присваивание проходит без преобразования:
type Reading = float64
func main() {
x := 21.5
var r Reading = x
}
Дан следующий код:
type Celsius float64
a := 36.6
var t Celsius = a
Скажите, соберется ли программа.
Дан следующий код:
type Score = int
points := 10
var s Score = points
Скажите, нужно ли преобразование типа
между points и s.
Объявите свой тип Percent поверх
int, присвойте значение через
Percent(50) и выведите его.
Затем скажите, можно ли присвоить туда
переменную int без преобразования.