tgoop.com/thank_go/162
Create:
Last Update:
Last Update:
Go 1.24: Псевдонимы generic-типов
Приближается февраль, а вместе с ним релиз Go 1.24. Ну а мы начинаем марафон новых фич и изменений!
Сначала напоминалка: псевдоним типа (type alias) в Go создает синоним для типа, не создавая новый тип.
Когда тип определен на основе другого типа, типы отличаются:
type ID int
var n int = 10
var id ID = 10
id = ID(n)
fmt.Printf("id is %T\n", id)
id is main.ID
Когда тип объявлен как псевдоним другого типа, типы остаются одинаковыми:
type ID = int
var n int = 10
var id ID = 10
id = n // works fine
fmt.Printf("id is %T\n", id)
id is int
Go 1.24 поддерживает generic-псевдонимы типов: псевдоним типа может быть параметризован, как и определенный тип.
Например, можно определить
Set
как generic-псевдоним для map
с логическими значениями (не то чтобы это было сильно полезно, но):type Set[T comparable] = map[T]bool
set := Set[string]{"one": true, "two": true}
fmt.Println("'one' in set:", set["one"])
fmt.Println("'six' in set:", set["six"])
fmt.Printf("set is %T\n", set)
'one' in set: true
'six' in set: false
Set is map[string]bool
Вполне возможно, что вы никогда не использовали обычные псевдонимы, и не будете использовать generic-псевдонимы. Но нужно же было пополнить вашу копилку бесполезных знаний :)
Завтра продолжим!
P.S. Если вы голосовали за длиннопост, он есть у меня.
BY Thank Go!
Share with your friend now:
tgoop.com/thank_go/162