• Задача
  • Решение
  • Обсуждение

SafeEqual: сравнение без паники

Прямое сравнение интерфейсов с несравнимым динамическим типом паникует. Реализуйте safeEqual: проверьте сравнимость через reflect.TypeOf(...).Comparable() и верните (eq, comparable) без паники.

GolangРешение
func safeEqual(a, b any) (eq bool, comparable bool) {
	ta := reflect.TypeOf(a)
	tb := reflect.TypeOf(b)
	if ta == nil || tb == nil || !ta.Comparable() || !tb.Comparable() {
		return false, false
	}
	return a == b, true
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки