TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
How to Go wrong

9 Apr, 18:48

Telegram'da ochish Ulashish Shikoyat qilish

Весь свой выходной день делаю одну штуку, связанную со сравнением значений разными способами (почти как 4 года назад), перечитываю спеку языка раз за разом. И вдруг заметил такое бревно в глазу языке, что теперь не могу развидеть.

В спеке есть понятия comparable и strictly comparable: «The equality operators == and != apply to operands of comparable types. The ordering operators = apply to operands of ordered types». Ordered операторы применяются к ordered типам – всё нормально. А вот equality операторы применяются к comparable типам – используется другое слово, как-то немного странно, но сойдёт.

Но дальше хуже. Есть в стандартной библиотеке пакет cmp, название которого явно происходит от слова compare, и название функции Compare говорит о том же. Что должна делать это функция? Если comparable типы – это про equality операторы, то, по идее, она должна просто (может, с поправкой на NaN) использовать ==. Но нет, она использует ordered операторы и типы.

Пошёл смотреть почему же нет cmp.Equal. И это просто портал в ад:


Equal([2]float64{nan, 456}, [2]float64{123, nan}) // true


Какая же мораль? Как обычно, NaN всё портит. Go – не такой простой язык, как кажется (никакой язык не такой простой, как кажется, но мы же тут про Go), но английский – ещё сложнее. А мне, видимо, надо отдыхать в выходной день без чтения спеки.

1.6k 0 12 4 12
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot