Второе имя типа в Go
Знак равенства в объявлении типа означает второе имя, а не новый тип. Слева пишут удобную метку, справа уже существующий тип, и компилятор считает оба имени одним и тем же типом для проверки присваивания.
Переменная с базовым типом и переменная со
вторым именем меняются местами без
преобразования, потому что знак равенства
не отрезал новую разновидность. Метод
объявляют только для своего типа без
равенства: на UserID метод не
запишут.
Объявим идентификатор пользователя как второе имя для целого и перекинем туда обычное число:
type UserID = int
func main() {
var id UserID = 42
n := 7
id = n
fmt.Println(id)
}
Дайте второе имя типу int с меткой
OrderNum, присвойте 100,
затем запишите в переменную обычное целое
5 и выведите результат.
Дан следующий код:
type UserID = int
var id UserID
id = 12
Скажите, нужно ли здесь явное преобразование типа.
Дан следующий код:
type UserID = int
func (id UserID) Show() {
fmt.Println(id)
}
Скажите, соберется ли программа.