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

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


@viktorreh
@anothertechrock

Чат: https://t.iss.one/+UA9kQbQdpFxmZGY6
Download Telegram
Задача: Идеальное число

Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.

Необходимо проверить входное число на идеальность.

Пример:

Ввод:
num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14

Ввод: num = 7
Вывод: false

Решение

Пишите свое решение в комментариях👇
👍4
Что выведет код?

package main

var m = make(map[any]any)

func foo[T any](x T) {
type K struct{}
m[K{}] = x
}

func main() {
foo(123)
foo(true)
println(len(m))
}


Ответ
🗿11
Вакансии для Golang-разработчиков за последние 14 дней:

Golang разработчик Гибрид/офис (Москва), Полная занятость

Backend Developer Удалёнка (Москва), от 3000$

Golang Blockchain Engineer Удалённо, от 450 000 до 525 000 ₽

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

Go Developer.Удалёнка, 4 000 – 5 600 $

#подборка #go
Чувствуете, что ваш Go-код тормозит под нагрузкой?

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

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

📅 Встречаемся 16 сентября в 20:00 МСК. Открытый урок проходит в преддверие старта курса «Golang Developer. Professional».

👉 Запишитесь на открытый урок → https://vk.cc/cPnpPA

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Восстановить IP

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

Условие задачи: Рабочий IP-адрес состоит ровно из четырех целых чисел, разделенных одиночными точками. Каждое целое число находится в диапазоне от 0 до 255 (включительно) и не может содержать начальных нулей.

Например, "0.1.2.201" и "192.168.1.1" являются допустимыми IP-адресами, но "0.011.255.245", "192.168.1.312" и "[email protected] " являются недопустимыми IP-адресами.
Учитывая строку s, содержащую только цифры, верните все возможные действительные IP-адреса, которые могут быть сформированы путем вставки точек в s. Вам не разрешается изменять порядок или удалять какие-либо цифры в s. Вы можете вернуть действительные IP-адреса в любом порядке.

Пример:

Ввод:
s = "25525511135"
Вывод:
["255.255.11.135","255.255.111.35"]

Ввод:
s = "0000"
Вывод:
["0.0.0.0"]

Решение задачи

Пишите свое решение в комментариях👇
👍51
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Huh.

Huh: простая, мощная библиотека для создания терминальных форм (написана на Go).

▪️Github

@golangprofi
😱4
Список интересных 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
📘 На Stepik вышел курс — «Golang - микросервисная архитектура, проектирование API»
Уже знакомы с Go и хотите перейти на следующий уровень? Этот курс — именно то, что нужно, чтобы прокачать свои навыки.

• Полный путь от сетевых протоколов до Kubernetes: HTTP/REST, gRPC, RabbitMQ и Kafka, PostgreSQL, Redis, Docker, Prometheus + Grafana
• Практика на реальных кейсах: проектируем API, пишем микросервисы, покрываем тестами, выкатываем CI/CD
• 180+ интерактивных заданий с автопроверкой — код прямо в браузере, в любое удобное время
• Итоговый pet-project: к финалу курса у вас будет рабочая мини-экосистема из нескольких сервисов

🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn

🚀 Прокачайте Golang с пользой и удовольствием. Начните уже сегодня и получите скидку 25%, которая действительна в течение 48 часов

👉 Пройти курс на Stepik
🦦 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