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

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


@viktorreh
@anothertechrock

Чат: https://t.me/+UA9kQbQdpFxmZGY6
Download Telegram
🧠 Хитрая задача на Go для продвинутых

Актуально для Go 1.22+


📌 Тень перестановки

У вас есть массив A из n уникальных положительных чисел (1 ≤ A[i] ≤ 1e6, n ≤ 200000).

Нужно определить, существует ли хотя бы одна перестановка этого массива P, такая что сумма побитовых AND соседних элементов:

P[0]&P[1] + P[1]&P[2] + ... + P[n-2]&P[n-1]

будет чётным числом?

🔍 Наблюдение:

a & b может быть нечётным только если оба числа нечётные.
• Если в массиве есть двое чётных или двое нечётных, то их можно поставить рядом — и сумма будет чётной.
• Значит, если есть хотя бы две одинаковые по чётности — ответ: YES.

Решение (O(n)):

1. Считаем количество чётных и нечётных чисел.
2. Если хотя бы одно из них ≥ 2 → `"YES"`, иначе — `"NO"`.

💻 **Код на Go:**

```go


func HasEvenAndPermutationSum(A []int) string {
odd, even := 0, 0
for _, v := range A {
if v%2 == 0 {
even++
} else {
odd++
}
}
if even >= 2 || odd >= 2 {
return "YES"
}
return "NO"
}```

🧪 Примеры:

```go
HasEvenAndPermutationSum([]int{5, 2, 8}) // YES
HasEvenAndPermutationSum([]int{1}) // NO
HasEvenAndPermutationSum([]int{3, 7, 11}) // YES
HasEvenAndPermutationSum([]int{2, 4, 6, 8}) // YES
HasEvenAndPermutationSum([]int{3, 2}) // NO```

⚙️ Сложность:

• Время: O(n)
• Память: O(1)

📌 Эта задача проверяет не только знание Go, но и умение думать на уровне битов и арифметических свойств. Отличный пример для собеседования: простая по коду, но требует правильного наблюдения.
4🤯2🦄1
⚡️ Avo — это библиотека и CLI-инструменты, которые позволяют писать ассемблерный код прямо на Go-коде и автоматически генерировать `.s`-файлы + Go-стабы* для вызова этих функций.

Этот необычный инструмент превращает написание высокопроизводительного ассемблера x86 в процесс, похожий на обычную Go-разработку.

Вместо управления регистрами вручную, вы описываете логику на Go-подобном синтаксисе а Avo генерирует оптимизированный ассемблерный код с правильными префиксами.

Проект особенно полезен для криптографии и низкоуровневых оптимизаций.

asm.go:


package main
import . "github.com/mmcloughlin/avo/build"

func main() {
TEXT("Add", NOSPLIT, "func(x, y uint64) uint64")
x := Load(Param("x"), GP64())
y := Load(Param("y"), GP64())
ADDQ(x, y)
Store(y, ReturnIndex(0))
RET()
Generate()
}



*Go-стабы: это Go-файл, который объявляет функцию без реализации, но с правильной сигнатурой, чтобы компилятор понимал, как с ней работать.

▪️ GitHub
🔥5
👣 GoPilot

GoPilot — это библиотека для Go, которая позволяет вызывать ваши функции с помощью естественного языка.

⚡️ С её помощью можно:
- Анализировать запросы на естественном языке
- Автоматически выбирать нужную функцию
- Преобразовывать динамические параметры в строго типизированные структуры
- Проверять обязательные поля и валидировать входные данные
- Управлять порядком выполнения и ответами

## Ключевые особенности

- Natural Language Processing
Обработка запросов пользователя без ручного парсинга текста.
- Automatic Function Routing
GoPilot сам сопоставляет запрос с зарегистрированной функцией.
- Type-Safe Parameter Mapping
Динамические вводимые данные конвертируются в структуры Go.
- Built-in Validation
Генерируемая схема параметров учитывает теги required, description и др.
- Easy Integration
Простое API: регистрируете функции и задаёте системный промпт.
- Flexible Response Handling
Поддержка разных форматов ответа и «режимов» выполнения.

## Быстрый старт


import (
"context"
"github.com/SadikSunbul/gopilot"
"github.com/SadikSunbul/gopilot/clients"
"github.com/SadikSunbul/gopilot/pkg/generator"
)

type WeatherParams struct {
City string `json:"city" description:"City name" required:"true"`
}
type WeatherResponse struct {
City string `json:"city"`
Temp int `json:"temp"`
Condition string `json:"condition"`
}

func GetWeather(p WeatherParams) (WeatherResponse, error) {
return WeatherResponse{City: p.City, Temp: 25, Condition: "sunny"}, nil
}

func main() {
client, _ := clients.NewGeminiClient(context.Background(), "API_KEY", "gemini-2.0-flash")
gp, _ := gopilot.NewGopilot(client)

weatherFn := &gopilot.Function[WeatherParams, WeatherResponse]{
Name: "weather-agent",
Description: "Get weather by city",
Parameters: generator.GenerateParameterSchema(WeatherParams{}),
Execute: GetWeather,
}
gp.FunctionRegister(weatherFn)
gp.SetSystemPrompt(nil)

// Генерация + выполнение за один вызов
result, _ := gp.GenerateAndExecute("Какая погода в Москве?")
fmt.Printf("%+v\n", result)
}


▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
🔧 env — библиотека, предлагающая минималистичный способ загружать конфигурацию из env-переменных в структуры.

В отличие от аналогов вроде viper, проект имеет zero-dependencies подход и понятную обработку ошибок. Теги вроде required илиenv — биделают валидацию конфига прозрачной без лишнего кода.

🤖 GitHub
2👍1💩1
Вакансии для Golang-разработчиков за последние 14 дней:

Junior Golang Developer (Backend) Гибрид (Москва), 80–120 т.р.

Go Backend Developer Гибрид (Тбилиси), 5 000–6 000 $

Golang developer Удалённо (Мир), 5 000 – 8 000 $

Golang Engineer Удалённо, офис, гибрид (Москва)

GO Developer Middle/Senior Удалённо, 200–300 т.р.

Golang-разработчик Удалёнка (РФ), 200 - 260 т.р.

Go Developer Golang/PHP (backend) Удалённо (РФ), 250- 300 т.р.

Jr Golang Developer (Backend) Удалённо (Мир), от 6000 $

#подборка #go
1💩1
🖥 Как базы данных выполняют SQL-запросы?

Процесс выполнения SQL-запросов в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.

1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.

2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.

3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.

4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.

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

6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.

7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.

8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.

Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.

@golangprofi
👍61🤮1
👣 SMTP-клиент Go CLI

Очень легкий CLI SMTP-клиент для удобной отправки писем из командной строки.

▪️Github
2👍1😐1
👣 Gozo — универсальный Go‑тулкит с мощными утилитами

Gozo — лёгкая и удобная библиотека, которая добавляет в Go инструментальный набор для повседневных задач: обработка срезов, карт, потоки и функциональные примитивы.

⚙️ Что внутри:
- `slices` — функции для работы с массивами: Map, Filter, Delete, Insert, Pop, PushFront, Fold, Some, Equals и даже ToMap — всё с поддержкой дженериков
- `maps` — утилиты: Map, Filter, Reduce, Equals, FilterMap, Fold, Slice
- `fp` (функциональные примитивы) — монады Option[T], Result[T], с конструктор-функциями: Some, None, Ok, Err, OptionFromPtr, OptionFromTuple
- `streams` — конвейеры обработки данных: Batch, Filter, Flatten, CSV, JSON, Pipe, Collect и другие
- `tuples` — простые структуры для пар значений (Tuple2)

🛠 Для чего это нужно:
- Ускоряет и делает код чище при работе с коллекциями
- Обладает безопасной обработкой ошибок и отсутствия значений через FP‑модели
- Дженерики обеспечивают типобезопанность и избавляют от лишнего шаблонного кода

- MIT‑лицензия

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

Go Разработчик Удалёнка, от 6000 $

GO-РАЗРАБОТЧИК Гибрид (Москва)

Go Developer Офис (Тбилиси)

Разработчик Go Удалённо (Санкт-Петербург)

Golang разработчик Удалённо (РФ), 400–500 т.р.

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

Senior Go Developer (Payment). Удалёнка, от 4000 $

Golang-разработчик Удалённо, от 2 000 $ до 3 000 $.

#подборка #go
2
Let's Go

Автор:
Alex Edwards
Год издания:
2022

#go #en

Скачать книгу
👍1
Go Programming - From Beginner to
Professional


Автор: Samantha Coyle
Год издания: 2024

#go #en

Скачать книгу
Вакансии для Golang-разработчиков за последние 14 дней:

GO Backend-разработчик Удалёнка, до 4500$

Golang - разработчик Удалёнка

Golang - разработчик Удалёнка, 90–150 т.р.

Go разработчик Удалёнка (Кипр)

JS/GO Backend Middle Удалёнка, 1100–2 400 $

Go developer Удалёнка (Саудовская Аравия, Рияд), 3500-5000 $

Golang разработчик Офис (Казань), 250  - 300  т.р.doi

Go-разработчик Удалёнка, от 200 до 450 т.р.

GO разработчик Middle/Senior. Удалённо (Москва), 250  т.р.

#подборка #go
2👍1
Вакансии для Golang-разработчиков за последние 14 дней:

Golang разработчик Удалёнка, 6 000 - 8 000 $

Go Developer. Гибрид (РФ), 450–600 т.р.

Go / Kubernetes Engineer Удалённо, 3 000 – 7 000 $

Golang разработчикУдалёнка (Мир), 50 –100  т.р.

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

Разработчик Golang Офис (Краснодар), от 150 т.р.

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

Golang разработчикОфис (Казань), 250–300 т.р.

Golang EngineerУдалёнка (РФ), 4 000–5 000 $

GO Разработчик (Senior/Middle). Удалённо, 250  т.р.

Golang Engineer Удалёнка (РФ)

Golang Developer Удалённо (Катар), от 4500 $

#подборка #go
1😢1