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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Learning Functional Programming in Go (2017)
Автор: Sheehan L.

#go #book #en

Язык: English.

Целевая аудитория: для go-разработчиков, знакомых с ООП и заинтересованных в изучении применения функциональной парадигмы.

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

В книге рассматриваются следующие темы:
✔️ создание надежных приложений;
✔️ методы устранения побочных эффектов;
✔️ первоклассные функции для реализации чистых функций;
✔️ реализация лямбда-выражения в Go и многое другое.

Преимущества:
глубокое введение в тему;
все взаимосвязано, просто и продуманно.

Недостатки:
не обнаружено.
#вакансия #GO #node.js #Казань #backend

Ты профессионал в разработке и мечтаешь, чтобы твой код помогал миллионам людей?

Компания: ПАО «Совкомбанк»
Локация: Казань
Формат: микс (офис+удаленка), на удаленке точно будем до лета
Зарплатная вилка: 70.000 - 150.000к

Мы в команде E-Commerce Совкомбанка разрабатываем нагруженные проекты со сложным бэком, насыщенные бизнес-логикой. Каждый день мы делаем наши интернет-заявки удобными, быстрыми и надёжными. И, конечно, идей и задач у нас больше, чем мы сейчас можем реализовать.
Нужна твоя помощь!

Что мы делаем:
🔹пишем нагруженные сервисы на Golang + Node.js
🔹используем MongoDB, MySQL (MariaDB), стек EFK, Docker/Kubernetes
🔹 интегрируемся с различными системами по REST API и openAPI

Что нужно от тебя:
🔸 уже не менее года писать качественный код на Go, Node.js
🔸 любить пробовать новое, отслеживать и применять полезные новшества,
🔸 постоянно думать о производительности и безопасности кода.

Что мы предлагаем:
🔹развитие крупных нагруженных проектов (бэкэнда и API),
🔹удобный график работы, включающий удаленку,
🔹 крутой офис с зонами отдыха, фруктами и напитками,
🔹 обучение и конференции,
🔹 конкурентную зарплату и премии за проекты,
🔹 увесистый соцпакет (ДМС, фитнес, образование, спецусловия на любые банковские продукты (ипотека, авто, кредиты, карты)

Чего у нас нет:
🔸легаси-кода и дресс-кода,
🔸лишних менеджеров и начальников,
🔸рутины и необходимости поддерживать старые системы.

Скорее присоединяйся 🌟

Контакты: IT HR «Совкомбанк»
Алеся Калинская
@luckypony95
#вакансия #работа #job #Петербург #Go #офис #частичнаяудаленка

Middle Go разработчик

Компания:
Selectel
Заработная плата: от 140 000 руб. на руки
Занятость: полная
Формат: офис, возможна частичная удаленка

Проект: IAM (Identity and Access Management) – система управления жизненным циклом учетных записей, ролями и доступами к различным сервисам/апишкам в компании.
Основные задачи: разрабатывать IAM, участвовать в обсуждении технических этапов для интеграции и взаимодействия сервисов соседних отделов, ревьюить код коллег, тесно работать с проектировщиками, тестировщиками и фронтами.
Стек: Golang, Python от 3, MySQL/PostgreSQL.
Будет плюсом - Опыт работы с Keycloak и/или Openstack Keystone, понимание концепций DevOps, CI/CD.

Почему Selectel:
• Белая зарплата, официальное оформление
• Годовая премия по результатам работы
• Бесплатные обеды, ДМС + стоматология, 50% оплата абонемента в фитнес-клуб, ежемесячная надбавка за некурение, регулярные спортивные мероприятия (турниры по пейнтболу, картингу, «Гонка героев», киберспорт, футбол, волейбол, баскетбол)
• Возможность участия в конференциях, полный доступ в онлайн-библиотеку, корпоративный английский и испанский
• Гибкое начало рабочего дня (до 12:00)
• Офис в 10 мин. пешком от ст. м. Московские ворота, своя авто- и велопарковка

Подробное описание вакансии тут

Присылайте резюме на @ev_molchanova или molchanova.e@selectel.ru
#вакансия #go #golang #удаленка #fulltime
🔍Ищу Go developer (удаленный формат работы)
🔷Компания: KALABI
🔷Локация: Москва
🔷Формат работы: fulltime, удаленка, гибкий график
🔷З/П: 150-250k net.
👉 Что потребуется от Вас:
✔️ знание языка Go и сопутствующей экосистемы;
✔️ опыт работы с очередями или брокерами сообщений и СУБД;
✔️ навык использования Git и владение Linux-системами;
✔️ опыт проектирования и разработки приложений с нуля;
✔️ понимание общих концепций программирования (шаблоны проектирования, ООП, модульность и прочее).
👌Мы предлагаем:
🔷крутые проекты, возможность
профессионального и карьерного роста в быстро развивающейся и коммерчески успешной компании;
🔷полный рабочий день с гибким графиком, можно работать удаленно;
🔷 оформление по ТК, ДМС со стоматологией (членов семьи можно оформить с большой скидкой);
🔷обучение используемым технологиям, оплачиваемые курсы и возможность участвовать в конференциях;
🔷сложные и необычные задачи (некоторые из задач решаются всего в нескольких компаниях в мире).
📞telegram:@faina_kleinman
#вакансия #go #golang #удаленка #fulltime
🔍Ищу Go developer (удаленный формат работы)
🔷Компания: KALABI
🔷Локация: Москва
🔷Формат работы: fulltime, удаленка, гибкий график
🔷З/П: 200-300k net.
Открыто несколько позиций в разных проектах:
-  Система экологического мониторинга для отслеживания состояния конкретных экосистем. 
-Система управления информационной безопасностью, реализующая полный спектр задач от планирования работ и управления рисками кибербезопасности до мониторинга трафика, сбора информации со средств защиты, поиска утечек и обнаружения аномалий.
👉 Что потребуется от Вас:
знание языка Go и сопутствующей экосистемы;
опыт работы с очередями или брокерами сообщений и СУБД;
навык использования Git и владение Linux-системами;
опыт проектирования и разработки приложений с нуля;
понимание общих концепций программирования (шаблоны проектирования, ООП, модульность и прочее).
👌Мы предлагаем:
🔷крутые проекты, возможность
профессионального и карьерного роста в быстро развивающейся и коммерчески успешной компании;
🔷полный рабочий день с гибким графиком, можно работать удаленно;
🔷 оформление по ТК, ДМС со стоматологией (членов семьи можно оформить с большой скидкой);
🔷обучение используемым технологиям, оплачиваемые курсы и возможность участвовать в конференциях;
🔷сложные и необычные задачи (некоторые из задач решаются всего в нескольких компаниях в мире).
📞telegram:@faina_kleinman
https://career.habr.com/companies/kalabi
#vacancy #golang #go #senior #remote

Вакансия: Senior Golang Developer
ЗП: от 5000$ на руки
Формат работы: удаленка
Занятость: полная
Проект: Rain is a venture-backed fintech with a mission to kill predatory financial products like payday loans. Our first product gives employees instant access to their wages, which solves a major problem for real people (115 million American workers are living paycheck-to-paycheck).
We are looking for a Senior Software Engineer. This position is remote. The candidate will be responsible for managing various areas of our backend platform, including API integrations with 3rd-party vendors and partners.

As a Senior Software Engineer with Rain, you will play a central role as we scale to 1M+ users. You will work with our US based product and engineering teams to implement quickly and contribute in all phases of the development lifecycle. Our ideal candidate is excited to tackle tough technical challenges and looking for opportunities to contribute to our strategic thinking.

Responsibilities:

-Translate business requirements into technical solutions, recommend alternative technical and business approaches, and lead engineering efforts to meet aggressive timelines
-Operational Excellence - monitoring & operation of production services including implementation of adequate resilience and high-availability models to support 24x7 operational availability
-Manage backend API integrations with 3rd-party vendors and partners
-Manage integration of user-facing elements developed by our front-end developers with server side logic
-Build reusable code and libraries for future use
-Optimize Rain application for maximum speed and scalability
-Design and implementation of data storage solutions

Skills And Qualifications:

-7+ years of Software Development experience
-A Bachelor’s degree in Computer Science or equivalent combination of technical education and work experience.
-Proficient knowledge of back-end programming languages such as Go / Golang, Java and C++
-Basic understanding of front-end technologies and platforms, especially React and React Native
-Good understanding of server-side CSS preprocessors
-Solid understanding of REST API design and development with experience building REST APIs
-Experience with API security standards and implementation (OAuth,)
-Good experience with API frameworks
Integration of multiple data sources and databases into one system
-Management of hosting environment, including database administration and scaling an application to support load changes
-Data migration, transformation, and scripting
-Setup and administration of backups
-Creating database schemas that represent and support business processes
Note: Examples of past work will be required as part of the hiring process***

The Rain Instant Pay app provides early wage access for employees at mid to large-sized organizations to improve financial wellness and increase employee productivity.

We offer:

-Employment by contract
-Competitive salary
-Medical insurance
-Working hours by IST zone
-Partial compensation for language classes
-Corporate and teambuilding events

CV can be sent to @dinochka_may
Размер типа структуры без полей ненулевого размера равен нулю. Размер типа массива, длина которого равна нулю или размер элемента которого равен нулю, также равен нулю. Это можно доказать с помощью примера выше.

В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.

📌 Например👇

var x [1<<63-1]struct{} // okay
var y [2000000000+1]byte // compilation error
var z = make([]byte, 1<<49) // panic: runtime error: makeslice: len out of range


#tip #go #beginner
Мы можем использовать цикл for-range для моделирования циклов for i in 0..N в некоторых других языках, как показано на примере выше.

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

#tip #go #beginner
#tip #go #beginner

💡 Указатели на массивы могут использоваться как массивы в нескольких ситуациях

📌 Пример слева компилируется и работает нормально, тогда как в примере справа третий for вызывает панику.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#tip #go #beginner

О случайном порядке итерации типа map

Встроенные мапы Go не поддерживают порядок входных значений. Поэтому при использовании цикла for-range для итерации записей мапы порядок записей рандомизируется. Запустив код из примера, вы увидите, что результаты могут отличаться.

Но обратите внимание, что функции вывода на экран в стандартном пакете fmt сортируют записи (по ключам) мапы. То же самое происходит с выводами вызовов функции json.Marshal.
#tip #go #beginner

Использование ссылки на переменную итератора цикла

В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:

Values: 3 3 3
Addresses: 0x40e020 0x40e020 0x40e020


На каждой итерации мы добавляем адрес i к срезу out, но поскольку это одна и та же переменная, мы добавляем тот же адрес, который в итоге содержит последнее значение, присвоенное i. Одно из решений — скопировать переменную цикла в новую переменную:

for i := 0; i < 3; i++ {
i := i
out = append(out, &i)
}


Новый вывод программы — это то, что ожидалось:

Values: 0 1 2
Addresses: 0x40e024 0x40e028 0x40e032


Строка i := i копирует переменную цикла i в новую переменную, ограниченную блоком тела цикла for, также называемым i. Адрес новой переменной — это тот, который добавляется к массиву. В каждой итерации цикла создается новая переменная.

Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:

Values: [[3] [3] [3]]
#tip #go

Типичная ситуация: пакет document не должен зависеть от пакета storage, но типу document.Doc нужен способ загрузки и сохранения содержимого.

В Go для создания и DI требуется три шага без каких-либо фреймворков. Примеры псевдокодом👇

1️⃣ Пакет document

Определите интерфейс в пакете document.

type Storage interface {
Load(int) Content <i>// some content type</i>
Save(Content) int
}

Сделайте интерфейсную часть типа Doc, чтобы позже подключить фактическое хранилище.

type Doc struct {
Cont Content
Store *Storage
}

Используйте этот интерфейс в функциях или методах, которые загружают или сохраняют содержимое документа.

func (d *Doc) LoadById(id int, s Storage) {
d.Cont = d.Store.Load(id)
}
<i>// same for Save...</i>

2️⃣ Пакет storage

Определите тип, который реализует интерфейс.

type DBStore struct {
db *database.DB
}
func (d *DBStore) Load(id int) Content {
<i>// ... load content by id</i>
}
<i>// same for Save...</i>

3️⃣ Пакет main

Подключите хранилище при создании документа. Предположим, что у нас есть объект приложения в main.

App.Doc.Store = storage.NewDBStore(...)
#tip #go #security

Два способа проверить свой код на наличие уязвимостей

📌Инструмент govulncheck, безусловно, является универсальным для сканирования репозиториев на наличие известных уязвимостей.

🔸Инструмент использует официальную базу данных уязвимостей Go vuln.go.dev, всеобъемлющий источник известных уязвимостей в общедоступных модулях Go.

🔸Govulncheck можно использовать в командной строке или как часть рабочего процесса CI.

📌Еще одним инструментом, заслуживающим внимания, является gosec: Golang Security Checker.

🔸gosec — CLI-инструмент, который может быть интегрирован в пайплайн CI. В дополнение к этому, gosec входит в состав golangci-lint.

🔸По умолчанию он отключен, и вы можете включить либо все проверки на уязвимости, либо только определенные из них. Таким образом, ваш код проверяется на наличие уязвимостей каждый раз, когда ваша IDE запускает линтер.

🔸В отличие от govulncheck, gosec не проверяет наличие известных уязвимостей в общедоступном коде Go. Скорее, он проверяет код на соответствие списку уязвимых шаблонов программирования, включая: жестко закодированные учетные данные, непроверенные ошибки, построение SQL-инструкций с использованием fmt и т.д.
💡gRPC и Go на практике

🤩Вы, вероятно, слышали о gRPC, если еще не использовали её. Она особенно популярна для межсервисной связи благодаря своей эффективности, языковой независимости и встроенной поддержке таких вещей, как MTLS.

☝️Выше представлен простой пример начала работы с gRPC от Matt Boyle.

#go #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Добавляем иконку для исполняемого файла Windows, созданного на Go:

1️⃣Готовим иконку

$ magick convert icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico

$ convert icon_16.png icon_32.png icon_48.png icon_256.png -colors 256 icon.ico

2️⃣Создаем файлы .syso

$ go install github.com/akavel/rsrc@latest

$ rsrc -arch 386 -ico icon.ico
$ rsrc -arch amd64 -ico icon.ico

3️⃣Go автоматически выберет любой соответствующий файл .syso в каталоге пакета main и включит его в исполняемый файл, созданный для Windows

👉 Подробнее

#go #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет на 2025-й — будьте осторожнее с выбором работы.

IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.

Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦‍♂️

Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:

— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер

Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.

Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs