Обобщенная структура в Go
Параметр типа можно поставить не только у функции, но и у структуры. Имя типа в квадратных скобках идет сразу после слова о структуре, а поля могут использовать это имя как обычный тип.
При создании значения в угловых скобках указывают конкретный тип для поля, либо компилятор выводит его из литерала или присваивания. Один шаблон структуры хранит и число, и строку, и свою структуру.
Опишем контейнер с одним полем. Печатаются
10 и "go":
package main
import "fmt"
type Box[T any] struct {
Value T
}
func main() {
n := Box[int]{Value: 10}
s := Box[string]{Value: "go"}
fmt.Println(n.Value, s.Value)
}
Объявите Cell с одним полем
Data типа параметра, запишите
42 в Cell[int] и выведите
поле.
Дан следующий код:
type Pair[T any] struct {
First T
Second T
}
Скажите, сколько раз имя параметра типа встречается в полях.
Создайте Box[string] с текстом
"ok" без указания типа в угловых
скобках, положив литерал в поле, и
выведите значение.