Библиотека Go-разработчика | Golang
23.2K subscribers
2.02K photos
39 videos
87 files
4.39K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🍆 Топ-вакансий для Go-разработчиков за неделю

Senior Golang Developer — от 300 000 ₽, Удалённо (Москва)

Golang-разработчик — Офис (Санкт-Петербург)

Go Developer — до 500 000 ₽, Удалёнка в Москве

Разработчик SIP-сервисов — от 350 000 ₽, Удалённо (Москва)

Middle Golang-разработчик — до 230 000 ₽, Удалёнка в Москве

Бустер — удалённо (не только Москва)

➡️ Еще больше топовых вакансий — в нашем канале Go jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Простота в написании тестов

Библиотека should делает из тестов небольшие рассказы. Она превращает привычные утверждения в чистые и интуитивно понятные фразы, такие как «должен быть равен» или «должен быть больше».

Пример:
should.BeGreaterThan(t, 10, 5)
should.BeLessThan(t, 3, 7)
should.BeLessOrEqualTo(t, 5, 10)


Простые и понятные утверждения, которые легко воспринимаются даже новичками.

➡️ Написать читаемые тесты

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7🤔5👾5
👨‍💻 Ваш идеальный инструмент для разработки

Что для вас важнее: скорость работы, расширяемость, поддержка плагинов или минимализм?

Когда дело доходит до написания кода на Go, выбор IDE или редактора — это почти личное дело каждого.

Давайте соберём статистику, поставьте эмоцию соответствующую вашей IDE:
👍 — VS Code
🤩 — GoLand
👾 — Другие IDE

Также ждём тёплые слова в пользу своего инструмента и камни в огород ненавистных IDE в комментариях 👇

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩121👍116👾34
🔄 Перекладывать JSON теперь проще

Составили промпт, который поможет в ежедневной рутине перемещения жсонов. Достаточно вставить структуру объекта и необходимый формат.

Промпт:
Напиши функцию на Go, которая преобразует JSON-объект с полями [Ваш JSON] в [Ваш формат]. Функция должна корректно обрабатывать ошибки парсинга JSON, возвращая либо строку, где произошла ошибка, либо ошибку.


👇 JSONо-укладчики «+» в чат

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱20🤔51😁1
🔥 Хороший ML-разработчик не начинает с нейросетей

На собеседовании по ML System Design кандидату дают задачу «предсказать отток», а он сразу лезет в нейросети. Красиво, модно, дорого.

Но профи думает иначе:

💭 Логрегрессия? Градиентный бустинг?
💭 А сколько у нас данных и времени?
💭 Что с интерпретируемостью?

Потому что не выбрать адекватную модель — это уже ошибка.

Нейросети — это круто. Но без понимания классического ML вы просто «подключаете модельку», а не строите решения.

➡️ На курсе разберём:

— линейные модели, деревья, PCA, кластеризацию
— метрики, переобучение, bias vs variance
— инженерные подводные камни, которые идут сразу после fit()

🎁 Скидка 10 000₽ по промокоду Earlybird, только до 27 июля.

А ещё — подарок для первых 10 участников: специальный лонгрид по теме курса, чтобы вы могли начать погружение в материал уже сегодня.

🔗 Успей записаться — и начни карьеру в Data Science уже через 3 месяца!
👨‍💻 Как работать с регулярными выражениями

В языке Go для работы с регулярными выражениями используется стандартный пакет regexp. Этот пакет позволяет искать, заменять и извлекать части строк на основе шаблонов.

Основные функции пакета regexp

regexp.Compile — компилирует строку в регулярное выражение.

regexp.Match — проверяет, соответствует ли строка регулярному выражению.

regexp.MatchString — проверяет, соответствует ли строка регулярному выражению. Применяется к строкам.

regexp.FindString — находит первое совпадение с регулярным выражением.

regexp.FindAllString — находит все совпадения с регулярным выражением.

regexp.ReplaceAllString — заменяет все совпадения строк на новый текст.

Проверка строки на соответствие регулярке:
package main

import (
"fmt"
"regexp"
)

func main() {
// Пример регулярного выражения для проверки email
re := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`

// Проверка строки
validEmail := "[email protected]"
invalidEmail := "test.com"

// Используем MatchString для проверки
isValid := regexp.MustCompile(re).MatchString(validEmail)
isInvalid := regexp.MustCompile(re).MatchString(invalidEmail)

fmt.Println("Is [email protected] valid email?", isValid) // true
fmt.Println("Is test.com valid email?", isInvalid) // false
}


Поиск первого совпадения:
package main

import (
"fmt"
"regexp"
)

func main() {
re := `\d+` // Шаблон для поиска чисел
str := "The price is 100 dollars."

// Находим первое совпадение
match := regexp.MustCompile(re).FindString(str)
fmt.Println("First match:", match) // "100"
}


Поиск всех совпадений:
package main

import (
"fmt"
"regexp"
)

func main() {
re := `\d+` // Шаблон для поиска чисел
str := "The prices are 100, 200, and 300 dollars."

// Находим все совпадения
matches := regexp.MustCompile(re).FindAllString(str, -1)

fmt.Println("All matches:", matches) // ["100", "200", "300"]
}


Флаги регулярных выражений

В Go также можно использовать флаги для изменения поведения регулярных выражений. Например:

(?i) — делает регулярное выражение нечувствительным к регистру.

(?m) — включает многострочный режим (по умолчанию ^ и $ работают только в начале и в конце всей строки).

Пример с флагом (?i) для нечувствительности к регистру:
package main

import (
"fmt"
"regexp"
)

func main() {
re := `(?i)hello` // Флаг (?i) делает регулярное выражение нечувствительным к регистру
str := "Hello World!"

match := regexp.MustCompile(re).MatchString(str)
fmt.Println("Is match:", match) // true
}


Несмотря на то, что регулярные выражения могут быть сложными для понимания, Go делает их использование интуитивно понятным.

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
💬 Почему Go популярный, но «победил» не всех

Go — это язык, который появился в 2007 году в Google. Разработчики языка ставили своей целью создание высокопроизводительного языка, который бы идеально подходил для многопоточных и масштабируемых приложений.

При этом Go — это статически типизированный язык, что даёт ему высокую производительность, но при этом не имеет той сложности, как у Java или C++.

Но почему бы всем не перейти на такой крутой язык?

• В Go нет полноценного наследования, классов и интерфейсов с полиморфизмом, как в Java или C++.

• Go, хотя и имеет активное сообщество и множество пакетов, всё ещё уступает в количестве и разнообразии экосистемы таким языкам, как Java или C++.

• Для более специализированных случаев может не быть готовых решений или библиотек, которые уже давно доступны в более зрелых языках.

• Несмотря на высокую производительность Go, язык не даёт такого уровня контроля над памятью и аппаратными ресурсами, как C++.

• Если задача требует низкоуровневой оптимизации или работы с конкретными устройствами, то плюсы будут предпочтительнее.

Go и не нужна эта аудитория, ведь плюсов у него хватает.

• Go — это один из самых простых языков для освоения и написания. Язык спроектирован таким образом, чтобы минимизировать количество концепций и сложных абстракций.

• Благодаря горутинам (легковесным потокам) и каналам (для синхронизации), Go предоставляет удобные и эффективные средства для работы с параллелизмом.

• Go компилируется очень быстро, а скомпилированный код — это просто один исполняемый файл. Это упрощает деплой, особенно для серверных решений.

• В последние годы экосистема Go стремительно развивается. Google, Uber, Dropbox используют Go для решения различных задач, от облачных сервисов до контейнеризации.

💬 Что вы думаете по этому поводу? Каждому языку своё место или Go должен заменить плюсы?

🐸Библиотека Go-разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🐳 Как использовать контейнеры в IDE

Недавно мы спрашивали у вас, какую IDE вы используете, и оказалось, что большая часть из вас работает либо в VS Code, либо в GoLand — причём почти поровну.

Мы любим всех одинаково, поэтому расскажем про фишку для обоих лагерей — Docker.

Docker в VS Code

Чтобы начать работать с Docker в VS Code, вам нужно установить несколько расширений, которые обеспечат полноценную интеграцию:

• Docker — это основное расширение, которое добавит поддержку всех функций Docker.

• Docker Compose — полезно для работы с многоконтейнерными приложениями.

После установки расширений, в боковой панели появится специальная вкладка Docker, которая предоставляет удобный интерфейс для работы с контейнерами

Вы можете видеть все запущенные контейнеры, а также управлять ими: запуск, остановка, перезапуск, удаление.

Также отображаются все доступные Docker-образы. Вы можете запускать контейнеры из образов или создавать новые образы на основе текущего контейнера

Для продвинутых есть вкладка с управлением томами для сохранения данных контейнеров и сетевыми настройками.

Для Go-разработки вы можете отлаживать код прямо в контейнере. Для этого нужно будет настроить отладчик, который будет работать с контейнерами.

В VS Code есть поддержка Remote - Containers, которая позволяет подключаться к работающим контейнерам и использовать их как среду для разработки и отладки.

Docker в GoLand

В GoLand Docker уже интегрирован прямо в IDE, и настройка занимает несколько секунд.

Перейдите в File → Settings → Build, Execution, Deployment → Docker и нажмите «+», чтобы добавить новое подключение Docker.

Если Docker установлен локально, GoLand автоматически подключится к вашему Docker-демону.

Если вы работаете с удалённым сервером, необходимо указать параметры SSH или URL для подключения к удалённому Docker-демону.

💬 Как вы используете Docker в своей разработке? В какой IDE удобнее работать с контейнерами?

🐸Библиотека Go-разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🥱51
😤 Устал листать туториалы, которые не складываются в картину

У тебя в голове уже есть логрегрессии, деревья, метрики и какая-то PCA, но системного понимания всё нет?

Пора с этим разобраться!

Наш курс по классическому ML:

— научит выбирать адекватные модели под задачу
— разложит метрики, переобучение и bias по полочкам
— покажет, что скрывается за fit/predict, и что с этим делать

🔔 До 27 июля по промокоду Earlybird минус 10.000₽

P.S. Первые 10 участников получат эксклюзивный лонгрид, чтобы начать изучать тему ещё до старта курса.

👉 Поменяй свою жизнь: старт карьеры в AI — успей до закрытия набора!
1🥱1
✏️ Как правильно представить пет-проект

Вы часто работаете над пет-проектами или берете фриланс-заказы в свободное время, но не знаете, как правильно представить эти проекты в резюме?

В карточках о том, как превратить даже самый небольшой опыт в весомый аргумент для работодателя.

➡️ Превратите пет-проекты в козырь

🐸Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Маскот языка Go это …
Anonymous Quiz
4%
Крот
61%
Гофер
7%
Сурок
28%
Суслик
🥱212😁1
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»

Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.

Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.

⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!

📆 Старт — 12 августа.

Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.

🎁 Последний день промокода Earlybird на скидку 10.000₽.

👉 Не упустите шанс!
👍3
👨‍💻 Материальный дайджест

Каждую неделю выходят полезные материалы, а мы собираем их в одном месте.

Создание собственного ИИ-маскота

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

Адаптация gopls к растущей экосистеме Go

С выходом версии v0.12 gopls была проведена переработка его ядра, из-за чего удалось сократить время запуска и потребление памяти в среднем на 75%.

Не нужно разделять память и потоки

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

Реализация деревьев Меркла на Go

Автор объясняет, как с помощью хэш-функций можно эффективно и безопасно подтверждать наличие данных в больших наборах, таких как блокчейны.

🐸Библиотека Go-разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM