#tip
Когда вам нужно инициализировать большие структуры, легко случайно пропустить необходимое поле. Компилятор не выдаст ошибку!
Вместо этого он устанавливает всем неинициализированным полям их значения по умолчанию. Хотя такая особенность часто очень удобна, иногда может понадобиться, чтобы компилятор указывал на поля структуры, которые не были явно инициализированы.
Линтеры идут на помощь! Линтер exhauststruct проверяет, что структура была полностью инициализирована. Мета-линтер golangci-lint включает в себя этот линтер, поэтому если вы уже используете golangci-lint, вы легко можете включить exhauststruct.
Теперь структура может содержать поля, которые предполагается использовать как необязательные. Тогда линтер может выдавать ненужные предупреждения.
Если определение структуры находится под вашим контролем, вы можете избежать ложных срабатываний линтера, добавив тег поля структуры exhaustruct:"optional" к необязательному полю.
Следующая инициализация будет помечена как некорректная, потому что отсутствует volume:
Когда вам нужно инициализировать большие структуры, легко случайно пропустить необходимое поле. Компилятор не выдаст ошибку!
Вместо этого он устанавливает всем неинициализированным полям их значения по умолчанию. Хотя такая особенность часто очень удобна, иногда может понадобиться, чтобы компилятор указывал на поля структуры, которые не были явно инициализированы.
Линтеры идут на помощь! Линтер exhauststruct проверяет, что структура была полностью инициализирована. Мета-линтер golangci-lint включает в себя этот линтер, поэтому если вы уже используете golangci-lint, вы легко можете включить exhauststruct.
Теперь структура может содержать поля, которые предполагается использовать как необязательные. Тогда линтер может выдавать ненужные предупреждения.
Если определение структуры находится под вашим контролем, вы можете избежать ложных срабатываний линтера, добавив тег поля структуры exhaustruct:"optional" к необязательному полю.
type Shape struct {
Length int
Width int
volume int
Perimeter int `exhaustruct:"optional"`
}
Следующая инициализация будет помечена как некорректная, потому что отсутствует volume:
var b Shape = Shape{
Length: 5,
Width: 3,
}
GitHub
GitHub - GaijinEntertainment/go-exhaustruct: golang analyzer that finds structures with uninitialized fields
golang analyzer that finds structures with uninitialized fields - GaijinEntertainment/go-exhaustruct
👍32❤2🤔1
Мини-гайд об организации кода gRPC и protobuf в проекте на Go
Автор кратко рассматривает, как использовать protoc и плагины с правильным импортом и структурой проекта.
🔗 Читать
Автор кратко рассматривает, как использовать protoc и плагины с правильным импортом и структурой проекта.
🔗 Читать
🔥8👍4❤2🥱2
Владимир Балун, старший разработчик в Яндекс, разбирает по полочкам задачу с Go-собеседования. Точнее, которую могут спросить на собеседовании.
👀 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Ошибки, которые стоит избегать на собеседовании Go
Курсы по программированию: https://clck.ru/37iG2b
Потренироваться проходить собеседования: https://clck.ru/3C2CY3
Консультации:
https://getmentor.dev/mentor/vladimir-balun-191
https://solvery.io/ru/mentor/vladimir_balun
Таймкоды:
00:00 - Введение
00:08…
Потренироваться проходить собеседования: https://clck.ru/3C2CY3
Консультации:
https://getmentor.dev/mentor/vladimir-balun-191
https://solvery.io/ru/mentor/vladimir_balun
Таймкоды:
00:00 - Введение
00:08…
❤14🥱13👍2🔥2🤔2
Тестирование Go-приложений с использованием Dolt: пошаговый гайд по работе с Dolt Go Driver.
🔗 Читать
🔗 Читать
GitHub
GitHub - dolthub/driver: Golang database/sql driver for Dolt
Golang database/sql driver for Dolt. Contribute to dolthub/driver development by creating an account on GitHub.
👍3❤2
#холивар
🌟❓Привет, подписчики! Вспомните свой профессиональный путь и ответьте на пару вопросов:
💬На какой стадии вашей жизни вы приобрели самые ценные знания и навыки, которые стали ключевыми для карьеры в IT?
💬Было ли это ещё в школьные годы, во времена колледжа/университета/института, в процессе самообразования или уже прямо на рабочем месте?
📌И самое главное — какие это были знания и навыки?
Делитесь опытом в комментариях👇
🌟❓Привет, подписчики! Вспомните свой профессиональный путь и ответьте на пару вопросов:
💬На какой стадии вашей жизни вы приобрели самые ценные знания и навыки, которые стали ключевыми для карьеры в IT?
💬Было ли это ещё в школьные годы, во времена колледжа/университета/института, в процессе самообразования или уже прямо на рабочем месте?
📌И самое главное — какие это были знания и навыки?
Делитесь опытом в комментариях👇
❤4
#инструменты
☝️🚀 Базы данных для Go-разработчика: рейтинг за последние 28 дней
🔝 Топ-10:
1⃣ milvus-io/milvus
2⃣ prometheus/prometheus
3⃣ etcd-io/etcd
4⃣ pingcap/tidb
5⃣ cockroachdb/cockroach
6⃣ influxdata/influxdb
7⃣ dgraph-io/badger
8⃣ hashicorp/consul
9⃣ flower-corp/lotusdb
1⃣0⃣ FerretDB/FerretDB
☝️
1⃣ milvus-io/milvus
2⃣ prometheus/prometheus
3⃣ etcd-io/etcd
4⃣ pingcap/tidb
5⃣ cockroachdb/cockroach
6⃣ influxdata/influxdb
7⃣ dgraph-io/badger
8⃣ hashicorp/consul
9⃣ flower-corp/lotusdb
1⃣0⃣ FerretDB/FerretDB
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💯5🤔2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔥🕑 10 признаков того, что пора увольняться
«Быть или не быть?», «Уйти или остаться?»: делаем вдох-выдох и принимаем важное решение.
🔗 Читать статью
🔗 Зеркало
«Быть или не быть?», «Уйти или остаться?»: делаем вдох-выдох и принимаем важное решение.
🔗 Читать статью
🔗 Зеркало
👍2
🔐 Новые релизы включают исправления безопасности для cmd/go (CVE-2023-39320), html/template (CVE-2023-39318, CVE-2023-39319) и crypto/tls.
🔗 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
✍️ Библиотека программиста» находится в поиске авторов оригинальных статей
Языки
● C#, Go, SQL.
Тематика
● Data Science (Python), базовые и продвинутые концепции языков C#, Go, SQL.
Объем
● от 7 до 15 тыс. знаков.
● 3-4 статьи в месяц.
Оплата
● 4к руб. за статью.
● Работаем с самозанятыми, ИП.
Статья публикуется на сайте proglib.io, в группе ВК (424к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в одном из профильных тг-каналов: Библиотека Шарписта, Data scientist’а, Go-разработчика.
➡️ Заполнить анкету ⬅️
Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».
Языки
● C#, Go, SQL.
Тематика
● Data Science (Python), базовые и продвинутые концепции языков C#, Go, SQL.
Объем
● от 7 до 15 тыс. знаков.
● 3-4 статьи в месяц.
Оплата
● 4к руб. за статью.
● Работаем с самозанятыми, ИП.
Статья публикуется на сайте proglib.io, в группе ВК (424к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в одном из профильных тг-каналов: Библиотека Шарписта, Data scientist’а, Go-разработчика.
➡️ Заполнить анкету ⬅️
Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».
👍6😁6
#инструменты
⚒️CLI Mate — инструмент, который позволяет упростить создание CLI-инструментов на Go. Он поддерживает вложенные подкоманды, глобальные/локальные флаги, генерацию справки из godocs, предложения по опечаткам и многое другое. Вдохновлен Python-fire и разработан на базе Cobra.
🔗 GitHub
⚒️CLI Mate — инструмент, который позволяет упростить создание CLI-инструментов на Go. Он поддерживает вложенные подкоманды, глобальные/локальные флаги, генерацию справки из godocs, предложения по опечаткам и многое другое. Вдохновлен Python-fire и разработан на базе Cobra.
🔗 GitHub
GitHub
GitHub - google/python-fire: Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely…
Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object. - google/python-fire
👍8⚡3❤2🥱1
#холивар
🤔Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек.
🚀Этот механизм полезен, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа.
💬А вы пользуетесь встроенным fuzzing-тестированием или используете сторонние библиотеки? Если второй вариант, то какие?
🤔Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек.
🚀Этот механизм полезен, если нужно проверить граничные условия или корректность обработки потока ввода — то есть тогда, когда нужно найти значения, при которых «падает» программа.
💬А вы пользуетесь встроенным fuzzing-тестированием или используете сторонние библиотеки? Если второй вариант, то какие?
👍2
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
Книги по языку Go, расставленные в порядке возрастания сложности, с отзывами читателей.
🔗Читать статью
🔗Зеркало
Книги по языку Go, расставленные в порядке возрастания сложности, с отзывами читателей.
🔗Читать статью
🔗Зеркало
🔥15❤4