Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpGnCm 90 of 280 menu
◀ ▶

Ограничение сравнения в Go

Не каждый тип можно сравнивать на равенство знаками == и !=. Ограничение comparable отмечает типы, для которых такое сравнение разрешено: числа, строки, указатели, каналы, массивы из сравнимых элементов и структуры из сравнимых полей.

Ключ карты тоже должен быть сравнимым: это то же правило, что стоит за comparable. В обобщенной функции ограничение подсказывает компилятору, что внутри можно искать дубликаты или проверять совпадение.

Напишем проверку равенства двух значений. Сначала на экране true, затем false:

package main import "fmt" func Equal[T comparable](a, b T) bool { return a == b } func main() { fmt.Println(Equal(1, 1)) fmt.Println(Equal("a", "b")) }

Объявите Has с ограничением сравнения, которая для среза и искомого значения возвращает true, если элемент есть, проверьте срез 1, 2, 3 и число 2.

Дан следующий код:

func Same[T comparable](a, b T) bool { return a == b }

Скажите, можно ли передать в Same два среза строк.

Создайте карту с ключом строка и значением целое, положите пару "x" и 1, затем прочитайте ключ через обобщенную Equal с текстом "x" и выведите результат сравнения ключа с этим текстом.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить