RSS Telegram YouTube Apple Яндекс Spotify Amazon Почта

50. Traefik 3, cmp.Or в Go 1.22

05.05.2024

Скачать

К списку выпусков

cmp.Or в Go 1.22

В Go 1.22 появилась функция cmp.Or, которая вызвала обсуждения среди разработчиков из-за её простоты и потенциальной пользы. Функция cmp.Or позволяет вернуть первое ненулевое значение из предоставленных аргументов, что удобно, например, для выбора значения переменной окружения или её дефолтного значения, если она не установлена.

Для ознакомления с предысторией и обсуждением любой функции в языке Go можно использовать GitHub. Находя нужный файл в репозитории Go, можно кликнуть на номер строки, выбрать "Git Blame" и проследить коммиты, добавляющие изменения, что также предоставляет ссылки на соответствующие обсуждения.

В случае с cmp.Or было интересно, что предложение об этой функции появилось примерно год назад и изначально встретило неодобрение сообщества, так как аналогичное обсуждение уже проводилось годами ранее. Несмотря на это, функция нашла своё место в языке благодаря своей очевидной полезности в определённых контекстах, как, например, в проектах Kubernetes, где разработчики часто реализовывали подобную логику.

Было также обсуждение нейминга функции. Изначальное предложение назвать функцию First было отвергнуто, так как оно могло быть не совсем интуитивным. В конце концов, название Or было выбрано по аналогии с другими языками, несмотря на то, что оно также может вызвать вопросы из-за отличий в логике.

Стоит отметить две особенности cmp.Or. Во-первых, все аргументы должны соответствовать ограничению comparable, то есть функция не принимает любые типы данных. Вторая особенность заключается в отсутствии "short circuit evaluation", то есть все аргументы функции вычисляются до вызова функции, что отличается от ленивого вычисления, применяемого в типичных операциях с логическим "или".

Таким образом, cmp.Or пример того, как даже простые идеи могут вызывать широкое обсуждение и быть полезными в разработке, подчёркивая важность обсуждений и обратной связи в сообществе программистов.

К списку выпусков