Golang Юниор
4.79K subscribers
204 photos
6 videos
246 links
Канал для начинающих изучать язык программирования Go. Юниоры или Junior - Вперед.

Контент нашего канала состоит из:
- туториалы
- вопросы с собесов
- тесты на знания Go


@viktorreh
@anothertechrock

Чат: https://t.iss.one/+UA9kQbQdpFxmZGY6
Download Telegram
Список интересных Go проектов

1. DDosify — Performance Testing Platform
DDosify - это хороший инструмент, если вы хотите проверить, как поведет себя ваше приложение при большом количестве пользователей, обращающихся к нему со всего мира.

2. Kopia — Cross-platform Backup Tool
Kopia предлагает удобный и простой способ создания копий зашифрованных и сжатых данных и сохранения в облачном хранилище.

3. Traefik — Reverse Proxy And Load Balancer
Traefik довольно популярен, поэтому вы, возможно, уже знакомы с ним. Это хороший инструмент для самостоятельной настройки прокси для ваших микросервисов.

4. Httpx — HTTP Toolkit
С помощью Httpx можно регулярно отправлять запросов для получения данных о веб-сайтах. Мне нравится использовать его для проверки работоспособности моих сайтов и приложений.

5. Evcc — Extensible EV Charge Controller
Evcc - это многоязычный контроллер для электромобилей на Go.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
👣 rueidis

Быстрый клиент Golang Redis, который выполняет автоматическую конвейерную обработку и поддерживает кэширование на стороне клиента.

package main


import (
"context"
"github.com/redis/rueidis"
)

func main() {
client, err := rueidis.NewClient(rueidis.ClientOption{InitAddress: []string{"127.0.0.1:6379"}})
if err != nil {
panic(err)
}
defer client.Close()

ctx := context.Background()
// SET key val NX
err = client.Do(ctx, client.B().Set().Key("key").Value("val").Nx().Build()).Error()
// HGETALL hm
hm, err := client.Do(ctx, client.B().Hgetall().Key("hm").Build()).AsStrMap()
}


▪️ Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤔1😱1
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Software Engineer. Удалённо, 6000–7000

Backend Developer Удалёнка, 250 000–400 000 ₽

Backend Golang-разработчик Удалённо, от 2500 до 5500 $

GO Engineer Удалённо, 6000–7000 $

Golang разработчик Удалённо/гибрид (Ульяновск/Краснодар), 150–230 т.р.

Golang Developer (architect) Удалённо, 4 000–6 000 $

Golang Backend Удалённо (МСК), 350–400 т.р.

Golang Backend Developer Удалёнка (РФ), 280–350 т.р.

Golang + Blockchain Software Engineer Удалённо, 6000–7000 USD

Golang Blockchain Engineer Удалённо, 6 000–7 000 USD

#подборка #go
🦦 Otter

Самая быстрая библиотека golang in-memory cache, основанная на алгоритме S3-FIFO. Раюотает во много раз быстрее, чем Ristretto.

Внутри используется хеш таблица, которая имеет мьютекс на каждый бакет + seq lock для чтения + каждый бакет помещается в две кеш линии, что предотвращает false sharing и это намногооо быстрее map с мьютексом и sync.Map.
Также исрользуется несколько трюков для избегания частых локов политики вытеснения: при чтении используются wait-free буфферы, которые иногда могут терять данные, но так как главная задача кеша - хранить наиболее частые элементы, то потери незначительны + реализация mpsc очереди при записи, которая значительно превосходит каналы по перфомансу и принцип из статьи bp-wrapper, который коротко можно назвать "batch, batch, batch" aka кеш не обновляет политику мгновенно, а только после наполнения небольшого буффера.

go get -u github.com/maypok86/otter

▪️Github
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Developer. Гибрид (Москва), до 220 000 ₽

Backend разработчик. Удалённо, от 290 000 ₽

Golang разработчикУдалёнка, 230–250 т.р.

Golang Developer Удалёнка (РФ), 200–240 т.р.

Golang Blockchain Engineer. Удалённо, 6 000–7 000 USD

Golang Developer Удалённо/офис (Азербайджан, Баку), 400–500 тыс. руб.

Golang Developer Гибрид/удалённо (Москва), 400 000–450 000 ₽

Backend Engineer Офис, 290–310 т.р.

#подборка #go
1
Вакансии для C#/.NET разработчиков за последние 14 дней:

C#/.NET-разработчик Удалёнка или гибрид (Москва), 170–200 т.р.

C# Developer Удалённо (РФ), 1400$ - 2500$

.NET разработчик Middle Удалённо, 240–280 т.р.

C#/.NET-разработчик Удалённо/гибрид, 170–200 т.р.

Fullstack QA на С# Удалённо (РФ), 250 000 - 370 000 ₽

QA full stack C# Удалённо (РФ), 250 000 - 280 000 ₽

.NET Backend Developer Удалённо (Бразилия), 5 000 - 6 500 $

C# .NET разработчик Удалёнка, 450-500 т.р.

QA Engineer C# Удалённо (РФ), 334 000 - 378 000 ₽

C# developer Гибрид (Москва), до 350 000 ₽

#подборка #csharp
👎8🤔3👍1
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Blockchain Engineer Удалённо, 6000–7000

Golang Engineer Удалённо

Golang Developer Удалённо (РФ)

Go Developer Гибрид, от 5000 до 6000£

Go-разработчик Удалёнка (РФ), 300–340 т.р.

Golang Engineer Удалёнка, 5000 USD

Ведущий Golang-разработчик. Удалённо/гибрид (Москва), от 300 000 до 350 000 ₽

Go разработчик Удалёнка, 300 000 ₽

Go разработчик Удалёнка, 300 000 ₽

#подборка #go
2
📌 Задача палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв.

Сложность: Средняя

Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.

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

В ответе надо вернуть длину такого палидрома.

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

Пример:

Ввод:
words = ["lc","cl","gg"]
Вывод: 6
Объяснение: lc" + "gg" + "cl" = "lcggcl" или же "clgglc", но оба имеют максимальную длину 6.

Ввод: words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8
Объяснение: "ty" + "lc" + "cl" + "yt" = "tylcclyt" или "lcyttycl"

Ввод: words = ["cc","ll","xx"]
Вывод: 2

Решение

Пишите свое решение в комментариях👇
Вакансии для Golang-разработчиков за последние 14 дней:

Go PHP Developer. Удалёнка, $3700–4200

Golang Developer. Удалёнка/гибрид/офис (Ташкент), $3200–4000

Golang Developer. Удалёнка/офис (Лиссабон, Португалия), $4000–6000

Tech Lead Backend-команды (Go). Удалёнка/офис, 7000–9000 €

Go Developer. Удалёнка (РФ, РБ)

Golang разработчик. Удалёнка/офис/гибрид

Golang Разработчик. Офис/удалёнка/гибрид (Москва, Краснодар, Иннополис)

Golang Developer. Гибрид

#подборка #go
👍1👎1
👣 Reload — это библиотека для Go, разработанная для автоматического обновления ассетов веб-сервера, таких как HTML, CSS и JavaScript, без необходимости вручную перезагружать страницу!

🌟 Она отслеживает изменения файлов на сервере и автоматически передаёт обновления в браузер с помощью WebSocket. Это значительно упрощает процесс разработки веб-приложений, особенно для динамических проектов с частыми изменениями интерфейса.

🌟 Библиотека интегрируется с различными фреймворками Go, используя middleware, и поддерживает управление кэшированием через заголовки Cache-Control. Простота настройки делает Reload удобным инструментом для ускорения разработки и тестирования. Она идеально подходит для разработчиков, которые хотят минимизировать рутинные задачи и сосредоточиться на создании функционального и качественного кода.

🔐 Лицензия: MIT

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Effective Go
Руководство на русском языке

Автор: go.dev
Перевод от:
2024

#go #ru

Скачать
👍51
👣 Почему сообщество #golang старается не использовать сторонние библиотеки?

Некоторые причины исторические (до Go 1.11 в Go была довольно печальная история управления зависимостями), некоторые культурные (сообщество Go пропагандирует простоту и самодостаточность), но некоторые из них, я бы сказал, являются хорошей практикой независимо от используемого языка.

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

Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.

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

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

Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.

Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:

- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.

👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.

@golangprofi
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.

Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.

Рассмотрим приведенный выше пример.

Структуры A и B имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше.

Она увеличивается до 32 байт, в то время как структура B остается меньше - 16 байт.
👍5
Вакансии для Golang-разработчиков за последние 14 дней:


Golang Developer. Удалёнка, 100–140 т.р.

Golang Developer. Удалёнка, 1700–2300 $

Go Developer. Удалёнка, 150–175 т.р.

Golang Developer. Гибрид

Golang Разработчик. Офис/гибрид/удалёнка (Москва, Краснодар, Иннополис)

Go Developer. Удалёнка

Python Go разработчик. Гибрид/офис (Москва)

Golang Developer. Удалёнка/офис (Лиссабон, Португалия), 4000–6000 $

Golang Developer. Удалёнка, 4000–7000 $


#подборка #go
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game

Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.

Игра написана с использованием движка Ebitengine и даже доступна в Steam.

Github
Проект

#ebitengine #gamedev #golang
3👍2
Пишем первую программу на Go 🚀 Для самых начинающих.

Привет, будущие гоперы! 👋 Давайте отбросим страхи и напишем вашу первую программу на языке Go. Это проще, чем кажется!

Шаг 1: Готовим рабочее место

- Мы уже установили Go и редактор кода (например, VS Code). Открываем редактор и создаем новую папку для нашего проекта.
- Внутри папки жмем на «плюсик» и создаем файл. Но не простой, а с кодом на Go!

Шаг 2: Создаем правильный файл


- Файлы с кодом на Go имеют расширение .go
- Есть важное правило: главный файл программы, с которого всё начинается, принято называть main.go.
- Создаем файл main.go. Теперь мы готовы писать код!

В следующем посте перейдем к самому интересному — написанию кода!

#Go #Программирование #ДляНачинающих #УрокGo #Часть1

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥰3💩2
Первая программа на Go: разбираем код по косточкам 🦴

В нашем файле main.go нужно написать несколько строчек. Не пугайтесь незнакомых слов, сейчас всё объясню!

package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}


Давайте разберем, что тут происходит:

- package main — объявляем «главный пакет».
- import "fmt" — берем полезный ящик с инструментами под названием fmt. Он нужен, чтобы выводить текст на экран.
- func main() — объявляем главную функцию. Программа всегда начинает свою работу именно отсюда.
- {} — внутри этих фигурных скобок живет код, который будет выполняться.

⬇️ Самое главное:

fmt.Println(...) — это команда из нашего ящика fmt, которая печатает текст и переходит на новую строку.
Текст, который мы хотим вывести, пишем в кавычках "..."

В следующем посте мы ЗАПУСТИМ эту программу и увидим легендарный «Hello, World!»

#Go #Программирование #ДляНачинающих #УрокGo #Часть2

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👀1
Запускаем первую программу на Go! Терминал и магия команды «go run»

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

Шаг 1: Открываем терминал в редакторе

Откроем сверху вкладку View ➡️ Terminal

Шаг 2: Волшебная команда

Убедитесь, что вы в папке с вашим main.go. Можно в терминале написать ls (на MacOS) или dir (на Windows), и нажать Enter, чтобы увидеть список файлов.

Вводим команду:
go run main.go

И нажимаем Enter

Что это значит?

- go — обращаемся к компилятору Go.
- run — просим его запустить файл.
- main.go — указываем, какой именно файл запускать.

Результат:
Если вы всё сделали правильно, в терминале вы увидите заветную надпись:
Hello, World!

Поздравляю! 🎉 Вы только что написали и запустили свою первую программу на Go! Это огромный шаг.

#Go #Программирование #ДляНачинающих #УрокGo #Часть3

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4😁2
Переменные в программировании — это проще, чем кажется! 🧠 На примере Flappy Bird

Представьте, что вы играете в Flappy Bird. Вверху экрана есть счётчик, который увеличивается с каждой пролетевшей трубой. Как игра "помнит", сколько очков вы набрали? 🤔

Всё просто: она использует переменную!

Переменная — это специальная ячейка в оперативной памяти компьютера, где программа хранит какие-то данные. В случае со счётом в Flappy Bird — это число.


- Название (например, score) — это уникальное имя, по которому программа находит нужную ячейку в памяти.
- Значение (например, 0, 5, 15) — это сами данные, которые хранятся в этой ячейке.
- Тип данных — определяет, что именно мы храним (число, текст и т.д.).

Как это выглядит в коде на Go?
score := 0 // Создали переменную "score" и положили в неё 0


Аналогия:
Переменная — это как коробка с подписью. Вы кладёте в неё значение (например, число 5), и потом, когда оно вам понадобится, вы просто смотрите в коробку с подписью score и достаёте оттуда 5.

#Go #ДляНачинающих #Переменные

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Developer. Удалёнка, 100–140 т.р.

Golang Разработчик. Удалёнка, 1 000 ₽/ч

Системный аналитик. Удалёнка, 120 т.р.

Golang Developer. Удалёнка, 75–125 т.р.

Backend Engineer. Гибрид (Варшава), 7 500 $

Go Developer. Удалёнка, 3000 USDT

Go Developer. Офис/гибрид/удалёнка (МСК)

Golang Developer. Удалёнка

Backend разработчик. Удалёнка

Fullstack Developer. Удалёнка

Go разработчик. Гибрид (Уфа)

Системный архитектор. Удалёнка, 250–300 т.р.

Backend разработчик. Гибрид (Астана), 600 000 KZT

Go Developer. Офис/гибрид/удалёнка (МСК)

Backend Разработчик. Офис (Алматы), 800 000 - 1 200 000 KZT

Golang Developer. Удалёнка, 4000–7000 $

Golang Developer. Удалёнка, 4800–5600 $

Senior/Middle+ Golang Developer (iGaming, Микросервисы). Удалёнка

#подборка #go
5
Так что же происходит "под капотом"! 👨‍💻

Мы выяснили, что переменная — это как ячейка памяти с именем

Представьте оперативную память как огромный шкаф с пронумерованными ящиками. Когда мы пишем:
score := 0


Мы делаем следующее:
1. Выделяем ящик в оперативной памяти
2. Даём ему имя score (вместо номера)
3. Кладём значение 0 внутрь

Как вывести значение переменной?

Точно так же, как мы выводили текст! Используем пакет fmt:
package main

import "fmt"

func main() {
score := 0 // Создали переменную
fmt.Println(score) // Вывели её значение!
}


Что происходит при выводе:

- Println видит, что мы передали не текст, а имя переменной score
- Он ищет в памяти ячейку с таким именем
- Достаёт оттуда значение (0)
- Выводит его на экран

Меняем значение — меняется вывод:
score := 20
fmt.Println(score) // Выведет 20!


Но есть важный нюанс! Пока мы просто редактируем файл в блокноте/редакторе — это просто текст. Магия начинается когда мы запускаем программу:
go run main.go


В этот момент:

- Программа загружается в оперативную память
- Компьютер выполняет код построчно
- Дойдя до score := 0, он создаёт реальную ячейку в памяти с именем score и значением 0

🚀 Всё оживает только при запуске программы командой go run, все тоже самое, как в посте выше

Теперь вы не просто пишете код — вы понимаете, как он работает на уровне памяти! Это основа для всех дальнейших тем в программировании.

В следующих постах разберём, какие бывают типы переменных и как с ними работать!

#Go #ДляНачинающих #Переменные

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
1