Практика на обобщения в Go
В этих задачах потренируем одну функцию на несколько типов.
Дан следующий срез:
words := []string{"go", "rust", "zig"}
Напишите обобщенную функцию первого
элемента с широким ограничением, верните
первую строку words и выведите ее.
Даны числа:
x := 10
y := 20
Объявите Pair с двумя параметрами
типа, верните оба аргумента в обратном
порядке для x и y и
выведите результат.
Дан следующий срез:
vals := []int{1, 2, 2, 3}
С ограничением сравнения напишите
функцию, которая считает, сколько раз
заданное значение встречается в срезе,
и выведите count для 2 в
vals.
Объявите Holder с полем значения
типа параметра, запишите "ok"
в Holder[string] и выведите поле.
Дан следующий код:
type Num interface {
int | float64
}
func Twice[T Num](v T) T {
return v + v
}
Выведите результат Twice для
1.5.
Дан следующий код:
type Tag int
type IntBase interface {
~int
}
func PrintInt[T IntBase](v T) {
fmt.Println(v)
}
Передайте Tag со значением
7 в PrintInt и скажите,
соберется ли программа.