Golang Дайджест
7.73K subscribers
36 photos
1 file
163 links
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv
Download Telegram
Официальный гайд по GoDoc-комментам

Мало кто знает, но такой гайд существует. Если хочешь стать godoc-мастером, очень рекомендую. Коллеги будут очень благодарны.

Здесь подробно разобрано:

- что такое godoc
- в каких случаях стоит писать такие комменты (спойлер - every exported name should have a doc comment)
- как их правильно писать в разных случаях (для типов, функций, констант, переменных и т.п.)
- как всё это форматировать

Всё разобрано очень подробно, приводится множество примеров.

#article #godoc #codestyle
GoGetPodcast #5: правила хорошего тона для разработчика

В выпуске обсуждаются вопросы, связанные с написанием хорошего кода в Go: нужен ли он? Насколько важен? Экономит ли "грязный код" время? Как научиться писать хороший код? И др.

Есть видео-вариант на YouTube и аудио-вариант на всех площадках подкастов, ссылки тут.

#gogetpodcast
GoGetPodcast #6: монорепозиторий vs мультирепозиторий

Будем обсуждать плюсы и минусы монорепозитория. Это частая тема холиваров, и мы решили внести свой вклад 😊

Когда и где: уже завтра (15.11), в 09:30 утра. Трансляция будет на моём YouTube-канале, запись чуть позже появится там же.

Участники:
- Глеб Яльчик - тех. директор компании Gaijin,
- Алексей Акулович - inDriver (ранее Tinkoff, ВКонтакте)

#gogetpodcast #анонс
Как сделать программу на Go быстрее на в х1.7 раз, изменив один символ

Хорошая короткая статья, которая лишний раз напоминает о том, что:

- понимание работы garbage collector'а важно для Go-разработчика
- необходимо понимать, когда стоит работать с указателями, а когда со значениями
- порой очень маленькие изменения дают очень большой эффект

На хабре есть перевод на русский.

#article #optimisation
Нужны ли комментарии в этом канале?
Anonymous Poll
59%
Нужны
17%
Не нужны
24%
Мне без разницы
Рассуждения про "Guard" Proposal для обработки ошибок в Go

https://wagslane.dev/posts/guard-keyword-error-handling-golang/

Обработка ошибок в Go достаточно многословна, но при этом надёжна - нам, как минимум, нужно писать для каждой ошибки:
if err != nil {
return err
}
Но зато мы точно ни одну не потеряем.

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

Несколько лет назад был предложен вот такой proposal. Суть его в том, чтобы добавить в Go два ключевых слова: must и guard.

- must - синтаксический сахар для паники при ненулевой ошибке
- guard - синтаксический сахар для return err при ненулевой ошибке

Автор статьи комментирует данный proposal, рассказывает что ему не нравится, и как сделать лучше.

В нашем чате предлагаю подискутировать на тему обработки ошибок - согласны ли с автором? Какие варианты нравятся вам больше? Или лучше оставить всё как есть?

#article #english #error_handling
Go developer roadmap

https://roadmap.sh/golang/

Идеальный гайд по изучению языка Go, помогающий ответить на вопросы:

- С чего начать изучения языка?
- Что вообще надо знать?
- В каком порядке это изучать?
- Где искать материалы?
и т.п.

Каждый элемент схемы кликабельный - открывается окошко с полезными ссылками для изучения темы.

Если вас часто спрашивают - "как изучать Go?", просто кидайте это ссылку. Но тут много всякого интересного, так что интересно будет не только новичку.

Спасибо @pavel_bogdashin за ссылку ☺️

#roadmap #guide
Как лучше передавать структуру User в Save() - по значению или по указателю?
И расскажите, пожалуйста, в комментариях, почему считаете именно так?

(постом ниже будет опрос)

type User struct {
Name string
Age int
// ... 2-5 other fields
}

// SaveUser doesn't change user's state
func Save(u User) error {
// ... save user to
somewhere
}
Признаки злоупотребления интерфейсами (Interface Pollution)

https://www.ardanlabs.com/blog/2016/10/avoid-interface-pollution.html

Автор рассуждает на тему злоупотребления интерфейсами, приводя конкретный пример кода и комментируя его.

Основная суть статьи заключается в этом кратком списке признаков (smell list) нежелательного использования интерфейсов:

- Пакет объявляет интерфейс, который полостью соответствует API своего собственного типа
- Фабричная функция возвращает значение интерфейса с неэкспортируемым конкретным значением внутри
- Интерфейс может быть удален и ничего не изменится для пользователя API
- Интерфейс не обеспечивает независимость кода от изменений реализации

Как обычно, интересно узнать ваше мнение в комментариях. Согласны с автором?

#english #interfaces #ardanlabs #cleancode
Разработка игры на Go в прямом эфире

Сегодня в 15:00 по мск (уже через 10 минут) Искандер Шарипов планирует запустить стрим, на котором напишет с нуля небольшую игру на Go.

Стрим будет на этом канале: https://www.twitch.tv/quasilyte

#анонс #gogamedev
Golang-Senior-Developer-Interview - Sheet1-1.pdf
41.8 KB
Новая версия опросника Даниила Подольского

Скорее всего, вы уже знакомы с первой версией, опубликованной на Хабре 2 года назад.

Сейчас у Даниила появился новый вариант, он: "более go-специфичный, но он пока недостаточно проверенный - маловато собесов провел по нему"

Прикладываю к посту pdf вариант, для удобства. Но лучше смотреть по ссылке в Google Docs, т.к. наверняка будет обновляться.
GoGetPodcast #7: Что должен знать и уметь Go-разработчик?

Трансляция будет на моём канале.
Когда: 04.02 (уже завтра), в 12:00 по Мск

Поговорим о том, как готовиться к собеседованиям, чего от вас будут ожидать, что пригодится на работе, как расти и развиваться в профессии.

Состав:
- Николай Тузов
- Глеб Яльчик - тех. директор компании Gaijin
- Даниил Подольский - Microavia.com
- Виталий Левченко - разработчик в Яндекс Практикум

P.S. Да. запись обязательно будет ☕️

#gogetpodcast #анонс
Please open Telegram to view this post
VIEW IN TELEGRAM
GoGetPodcast #7: Что должен знать и уметь Go-разработчик?

Выпуск в хорошем качестве уже доступен на YouTube и других площадках. Если что-то не расслышали на трансляции, в записи всё будет ок.

Страничка на основном сайте подкаста

Ссылки:
- Mave - тут также есть список экзотических платформ, на которых можно послушать подкаст
- YouTube
- Apple Podcasts (iTunes)
- Google Podcasts
- Яндекс Музыка
- VK

#gogetpodcast
Какой функцией вы проверяете отсутствие ошибки в тестах, когда используете `stretchr/testify`?

Аргументирование своего варианта в комментариях приветствуется
Anonymous Poll
54%
NoError(t, err)
8%
Nil(t, err)
2%
Другой способ (напишу в комментах)
12%
Не использую testify
24%
Посмотреть ответы / не пишу на Go / Не пишу тесты
Bittorrent клиент с нуля на Go

https://blog.jse.li/posts/torrent/
Есть перевод перевод

💙 Моя любимая рубрика: делаем своими руками

Статья написана хорошо - читается интересно, все понятно, все по делу, без воды.

Как полагается, автор начинает с краткого вводного ликбеза:
- что такое BitTorrent и одноранговые сети
- как устроен протокол BitTorrent
- какая структура у torrent-файла (Bencode), как его парсить
- почему все это так устроено
И т.п.

Ну и самое главное - практическая реализация на Go

Я по прежнему считаю, что лучший способ в чем-то разобраться - сделать это своими руками. А изучение технологии BitTorrent, это хороший способ расширить область своих знаний.

#article #dyi #bittorrent