Golang задачи с собеседований @golangquiz Channel on Telegram

Golang задачи с собеседований

@golangquiz


Задачи, тесты и теоретические вопросы по Go. Так же по gin, grpc, горутинах, архитектуре api и http стэку.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny

Golang задачи с собеседований (Russian)

Вы ищете ресурс, который поможет вам подготовиться к собеседованиям по Go? Тогда канал "Golang задачи с собеседований" (@golangquiz) идеально подходит для вас! Здесь вы найдете разнообразные задачи, тесты и теоретические вопросы по Go, а также информацию о gin, grpc, горутинах, архитектуре api и http стэке. Этот канал создан для тех, кто стремится улучшить свои знания и навыки в разработке на Go.

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

Присоединяйтесь к каналу "Golang задачи с собеседований" прямо сейчас и готовьтесь к успешным собеседованиям по Go!

Golang задачи с собеседований

13 Feb, 20:03


Будет ли defer активироваться после каждой итерации?

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

Golang задачи с собеседований

11 Feb, 14:12


🏗 🔨 Как не разрушить продакшен: 8 основных паттернов распределённых систем

Создание распределённых систем связано с множеством трудностей: от управления состоянием и взаимодействия сервисов до обработки сбоев и масштабирования. Для упрощения решения этих задач инженеры применяют проверенные архитектурные паттерны.

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

➡️ Читать статью (https://proglib.io/sh/JMoAX8FZRs)

🐸 Библиотека devops'a (https://t.me/devopsslib)

Golang задачи с собеседований

07 Feb, 15:59


Хотите писать высокопроизводительный код на Go?

Go — это язык, который сделал параллельное программирование проще и мощнее. Горутины, каналы и лучшие практики — всё это на нашем открытом уроке!

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

Регистрируйтесь на открытый вебинар «Паттерны параллельного программирования» уже сегодня и получите скидку на курс «Go Developer Basic»!

Встречаемся 13 февраля в 18:00: https://clck.ru/3GEaYH

Реклама. ООО «Отус онлайн-образование», ОГРН 117774661857

Golang задачи с собеседований

07 Feb, 11:29


13 февраля в 18:30 встречаемся в Москве на Golang Meetup вместе с компанией Островок!, чтобы подсветить нюансы в Golang, которые сделают ваш код и жизнь проще и лучше:

🟢«Надёжная архитектура: clean architecture и другие подходы» «Надёжная архитектура: clean architecture и другие подходы»
- Виктор Корейша, руководитель направления Management Services Ozon;
- Иван Чернов, архитектор Островок;
- Виталий Левченко, engineering manager Wildberries.
Это интерактивная дискуссия, готовьтесь высказать свое мнение.

🟢 «Weak Pointers и Unique для оптимизации памяти в Go 1.24. Слабые поинтеры для сильного приложения»
- Никита Степанченко, Team Lead Островок.

🟢 «Топ гошных ловушек на собеседованиях»
- Олег Козырев, Software Engineer.

Регистрация и подробности тут

Golang задачи с собеседований

07 Feb, 11:07


Свой VPN на golang


Решил сделать свой VPN на golang. В принципе основную часть сделал:

Программа создаёт виртуальный интерфейс TUN
Подключается к VPN серверу по UDP
И передает данные из TUN на сервер, а с сервера в TUN
На сервере примерно тот же самый сценарий. Как я понял, это уже является VPN (только без шифрования, но это я добавлю). Хотелось бы дать клиенту доступ в интернет, то есть что бы на сервере IP пакеты отправлялись дальше в сеть и с сети клиенту. Это я и не понимаю, как сделать. Всё делаю под Windows.

Golang задачи с собеседований

07 Feb, 06:59


📌 55% кандидатов валятся на этих трёх задачах. Разбери их до собеседования!

🔥 Бинарный поиск — один из самых частых алгоритмов на собеседованиях.
Но половина кандидатов (55%) делает ошибки или не может решить даже базовые задачи.

На бесплатном онлайн-уроке ты:
Решишь 3 реальные задачи с собеседований в Яндекс, Озон и Сбер
Раз и навсегда освоишь бинарный поиск, чтобы не ошибаться на собесе
Поймёшь, как интервьюер оценивает твой код

Разбираем решения на 6 ЯП: 🖥 🖥 🖥 👣 🖥 🖥

📅 Когда: 8 февраля (суббота), 12:30 по МСК
📍 Где: Онлайн

🔗 Регистрируйся: https://clck.ru/3GC4KD

Не откладывай — разберись в бинарном поиске не просто быстро, а навсегда!

(Это часть большой программы подготовки к собеседованиям. Если хочешь получить оффер в компанию мечты, приходи — всё покажу!)

Golang задачи с собеседований

05 Feb, 07:08


Работаешь в сфере IT?

👨‍💻 Тогда выбирай свой уровень:

• Новичок: Полноценная помощь с трудоустройством. Проведение интервью, работа с ментором, создание персонального RoadMap и резюме под ключ! Работа до результата с кандидатами любого уровня!

• С опытом: Предоставим статус «Toп-специалиста», откроем доступ к эксклюзивным вакансиям. Возьмем на себя продвижение вашей кандидатуры компаниям, гарантируем высокую зарплату с учетом пожеланий по загрузу и условиям труда!

Хватит бояться и сидеть без работы! Заходи на RabotaYou 👈🏼

Golang задачи с собеседований

04 Feb, 20:41


Пишите свои ответы в комментариях 👇

На самом деле ответ — 0, так как nil-мапа позволяет использовать метод get. А метод set не позволит скомпилировать код.

Golang задачи с собеседований

31 Jan, 07:48


React 19: что нового в самой популярной библиотеке для создания интерфейсов? Узнайте первыми!

Новые хуки, улучшения рефов, кастомные элементы — React становится ещё удобнее. И мы готовы рассказать, как использовать это на практике.

Хотите быть на пике технологий? На открытом вебинаре 6 февраля в 19:00 мск разберём, как применять нововведения React 19 в реальных проектах.

Все участники получат скидку на большое обучение «React.js Developer» — идеальный способ прокачать навыки.

Записаться: https://clck.ru/3G6Sp7

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

Golang задачи с собеседований

30 Jan, 15:00


Пишите свои мысли в комментариях 👇

Ответ: Информацию можно отправить.

Golang задачи с собеседований

30 Jan, 10:35


Golang. Вывод суммы в рублях и копейках


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

Текст задачи:

Напишите программу, которая считывает строку и выводит ее предполагаемую цену, 1 символ = 23 копейки в следующем формате:

Y коп. - если цена не дотягивает до рубля.

X р. Y коп. - если цена превышает 1 рубль.

package main

import (
"fmt"
"unicode/utf8"
)

func main() {
var praic float64 = 0.23
var samplText string
var result int
fmt.Scan(&samplText)
result = utf8.RuneCountInString(samplText)
var resultRub float64 = float64(result) * praic
var RUB int = int(resultRub)
if resultRub > 1.00 {
fmt.Printf("%d р. %d коп.", int64(RUB), int((resultRub-float64(RUB))*100))
} else {
fmt.Printf("%d коп.", int(resultRub*100))
}
}

Golang задачи с собеседований

30 Jan, 09:28


🐘 Тест по PHP

🔥 Проверь насколько хорошо ты знаешь PHP

Ответишь — пройдешь на продвинутый курс "PHP Developer. Professional" от OTUS по специальной цене.

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

👩‍💻 Поэтому программа курса глубоко погружается в экосистему PHP:

Инфраструктура — Docker, виртуальные машины, облака, сетевое взаимодействие, обеспечение безопасности приложения, Composer, управление зависимостями, очереди и построение асинхронного взаимодействия.
Хранилище — PostgreSQL, MySQL, NoSQL (Clickhouse, ElasticSearch) и взаимодействие PHP с различными типами хранилищ.
Тестирование — не только unit-тесты, но и покрытие тестами всех слоёв приложения

➡️ ПРОЙТИ вступительный ТЕСТ: https://clck.ru/3G5DxV

Приятный бонус Курс можно приобрести в рассрочку и без переплаты

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

Golang задачи с собеседований

30 Jan, 06:05


Highload буткэмп: Системный дизайн, Производительность и Масштабирование

🌐 Приглашаем на курсы для прокачки навыков архитектора и проектировщика на весеннем Highload-потоке от Devhands, в рамках которого вы:

🤩 Изучите ключевые хайлоад-паттерны и освоите проектирование систем с миллионной аудиторией: балансировка, масштабирование, шардинг, высокая доступность, CAP/PACELC, транзакционные очереди и многое другое.
🤩 Поупражняетесь в системном дизайне на реальных кейсах: маркетплейсы, соцсети, доставка, объявления и другие задачи, с получением обратной связи.
🤩 Погрузитесь в highload, работая с предоставленной вам инфраструктурой: “выжимайте” 100K RPS и изучите кластерные решения — Redis, SPQR, CockroachDB.
🤩 Научитесь планировать нагрузку и связывать бизнес-показатели с требованиями системы.
🤩 Попрактикуетесь в проведении и прохождении секций системного дизайна на интервью.

Только “живые” онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.

🗓 Старт потока 24 февраля, изучайте программу и записывайтесь:

🤩 Буткэмп “Производительность и масштабируемость” для тех, кто хочет поработать с собственной инфрой.

🤩 Курс “Системный дизайн высоконагруженных проектов” для тех, кто хочет только практику проектирования “у доски”.

🥸 Кто мы: R&D-центр Devhands, основатель и автор курса Алексей Рыбак, ex-СТО Badoo и Yum! Brands, член программного комитета Highload.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqutyuX6

Golang задачи с собеседований

29 Jan, 13:06


🌟 Станьте экспертом в разработке на Golang и создавайте надежные серверные приложения! 🌟

Ждем вас на курсе «Golang Developer. Professional», с помощью которого вы сможете:

Погрузиться в идиоматику и узнать, как правильно писать на Golang;
Поработать с реальными коммерческими задачами от разработчиков из ведущих компаний;
Изучить не только синтаксис языка, но и внутренние механизмы Go;
Узнать о значимых случаях перевода крупных высоконагруженных проектов с других технологических стеков на Go;
Изучить прикладные алгоритмы и способы решения задач по олимпиадному программированию.

Программа создана для бэкенд-разработчиков, DevOps-инженеров, фулстек-разработчиков и разработчиков на других языках.

💡 Насколько вы готовы к сложности продвинутого онлайн-курса «Golang Developer. Professional»? Покажет вступительный тест! Пройдите полное тестирование и присоединяйтесь к группе с максимальной скидкой по промокоду "GoProfessional_5", а также получите доступ к открытым урокам курса: 👉 https://clck.ru/3G3qro

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

Golang задачи с собеседований

29 Jan, 12:32


Обработка сообщений, которые содержат альбомы (media_group), через telegram api


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

В ситуации, когда одно сообщение содержит только текст и/или одно изображение, всё хорошо. Получаем один update, в нём лежат все данные, извлекаем и обрабатываем.

Сложности возникают с обработкой сообщений, которые содержат так называемый альбом (медиа группу). Как пример - сообщение, в котором вложены две и более фотографии.

В этом случае бот получает такие сообщения как бы фрагментами (отдельными update'ами). Например, сообщение, состоящее из двух фотографии, бот получит по API в трёх разных update’ах.

Сложность с тем, чтобы понять:

Когда «долетит» последний "фрагмент", после которого можно приступить к анализу всего сообщения?
Как потом обратиться ко всем фрагментам этого сообщения?
Просматривая такие сообщения с помощью бота Json Dump, я увидел, что у такой «пачки» одинаковое значения поля «media_group_id». Вероятно, это и есть связующий ключ. Но два вышеуказанных вопроса по прежнему актуальны.

Не хотелось бы делать костыли в виде глобальной/статической переменной, в которой я должен запоминать начало получения такого сообщения. К тому же, у меня нет понимания: гарантирует ли API телеграмма, что между "фрагментами" одного сообщения не залетит update от другого события/сообщения.🤷‍♂️

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

Golang задачи с собеседований

29 Jan, 09:54


🎥 🚀 Вебинар: Транзакции в реляционных СУБД — основы, лучшие практики и стратегии обеспечения согласованности данных.

💪 Особенности вебинара:
1. Как организовать управление в реляционных СУБД и почему их использование важно для защиты и согласования данных.
2. Принципы ACID: что лежит в основе надежной работы транзакций и как обеспечить выполнение этих преобразований.
3. Механизмы управления конкурентным доступом, включая блокировку и изоляцию транзакций, для предотвращения помех и аномалий.

⭐️ В результате вебинара:
- Вы поймёте, как эффективно использовать обработку данных в реляционных СУБД.
- Изучите основные понятия ACID, блокировки и реализации, необходимые для построения устойчивых и безопасных систем.
- Узнаете, как разрабатываются подходы, минимизирующие ошибки, повышающие производительность и кратковременные масштабирования приложений.

🚀 Не упустите возможность стать экспертом. Всем участникам будут доступны сециальные условия для постулпения на курс Highload Architect в Otus.

Дата и время: 30.01.2025, в 20-00 (мск)

👉 Зарегистрируйтесь для участия: https://clck.ru/3G2yci

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

Golang задачи с собеседований

27 Jan, 08:04


Открытый урок «Оптимизация работы компонентов в React.js».
Когда: 29 января в 20:00 мск.

На вебинаре вы узнаете:
- Как работать с оптимизацией в React.js
- Особенности работы функциональных компонентов и хуков
- Трюк с мемоизацией коллбеков для списка элементов

Встречаемся в преддверии старта курса «React.js Developer» Otus.
Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://clck.ru/3Fz3mY

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

Golang задачи с собеседований

24 Jan, 21:23


Вместится ли весь первый массив? Произойдет ли ошибка?

👇 Оставляйте свои ответы в комментариях!

Для любопытных — будет выведено 2 [1 2]

Golang задачи с собеседований

23 Jan, 08:28


Ищете способы сделать Bitrix24 ещё мощнее? Мы знаем, как!

На открытом уроке вы узнаете, как интегрировать Bitrix24 с Google Workspace и Microsoft 365:
— Расширьте возможности CRM.
— Автоматизируйте рутинные задачи.
— Улучшите коммуникацию в компании.

Только реальные кейсы, примеры успешных интеграций и рекомендации от эксперта. Участники урока получат скидку на обучение на курсе «Разработчик Битрикс24».

Не упустите шанс! Встречаемся 27 января в 20:00 мск.

👉 Узнать больше: https://clck.ru/3FtMWa

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

Golang задачи с собеседований

22 Jan, 12:31


⭐️ Symfony и Kafka — союз, о котором мечтают разработчики!

👉 Узнайте, как интеграция Symfony Messenger с Kafka делает обработку асинхронных задач надёжной и масштабируемой. Мы разберём примеры, лучшие практики и подводные камни.

Хотите уверенно работать с этой мощной связкой и прокачать свои проекты? 28 января в 20:00 мск вас ждёт открытый урок, где мы расскажем, как настроить и использовать Kafka как транспорт.

Спикер Михаил Каморин — Dev Tech Lead в Skyeng, участник и организатор конференций по PHP, член ПК Podlodka PHP Crew.

👉 Регистрируйтесь на вебинар сейчас и получите скидку на обучение на курсе «Symfony Framework»: https://clck.ru/3FtNvH

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

Golang задачи с собеседований

21 Jan, 09:38


Вакансии «Библиотеки программиста» — приглашаем вас в нашу команду!

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

Подробности можно узнать на сайте.

Мы предлагаем частичную занятость и полностью удаленную работу — вы можете совмещать с основной работой и находиться в любом месте🌴

С нетерпением ждем ваших откликов 👾
https://job.proglib.io/

Golang задачи с собеседований

16 Jan, 08:52


Вебинар: база данных на Go!
Присоединяйтесь к открытому вебинару «Взаимодействие с базой данных и миграции на Go».

Что вы узнаете:

- как создавать таблицы и структурировать базы данных;
- как разрабатывать базу для веб-приложений на Go;
- как работать с ОРМ и SQL-запросами.

Почему это важно: Golang — язык будущего. После вебинара вы сможете создавать и мигрировать базы данных, что станет вашим преимуществом в IT.
Действуйте!

Регистрируйтесь на вебинар и получите скидку на участие в большом курсе «Go (Golang) Developer Basic»: https://clck.ru/3Fmbia

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

Golang задачи с собеседований

14 Jan, 16:06


💡 Создайте простой кэш в памяти с использованием языка Go

Делитесь своими решениями в комментариях! 👇
Там же можно найти ответ!

Golang задачи с собеседований

13 Jan, 22:09


🧑‍💻 Статьи для IT: как объяснять и делиться важными идеями

Напоминаем, что у нас есть бесплатный курс (https://stepik.org/course/101672/promo) для всех, кто хочет научиться писать интересно — о программировании и в общем.

Что такое курс: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы постоянно обновляются, дополняются и корректируются. Также мы отвечаем на все учебные вопросы в комментариях курса.

Golang задачи с собеседований

12 Jan, 22:13


Где будут находиться переменные из каждой функции — в стеке или в куче?

👇 Пишите свои ответы в комментариях!

А вот ответ: переменная p в первой функции будет находиться в куче, а во второй — в стеке.

Golang задачи с собеседований

07 Jan, 10:36


💡 Хотите решить задачи?

Загляните в репозиторий (https://clc.to/k3pp_w)! Это небольшой сборник интересных задач для тех, кто хочет изучать или улучшать свои навыки программирования на языке Go.

📂 Как всё организовано?
Каждая задача представлена в отдельной папке с:
Описанием в README.md, чтобы вы точно поняли, что нужно сделать.
Тестами в *_test.go, которые помогут избежать халтуры.

🛠 Что нужно делать?
1️⃣ Читайте задание в README.md.
2️⃣ Пишите решение на Go.
3️⃣ Запускайте тесты и радуйтесь (или ищите ошибки, если тесты не проходят).

🔥 Подходит как для новичков, так и для опытных разработчиков, которые любят развивать свои навыки через практику. А если вы создадите самое элегантное решение и сделаете это быстрее всех, то ваше имя увековечат в репозитории!

Golang задачи с собеседований

03 Jan, 16:53


🎄 Начни 2025 год с улучшением своих навыков, которые откроют тебе путь в мир IT!

Ты можешь создать свой индивидуальный план обучения с помощью нашего новогоднего конструктора. Это возможность не только начать год с полезными знаниями, но и сделать инвестицию в своё будущее, которая многократно оправдает себя.

🔗 Создай свой план и начни свой путь в IT (https://proglib.io/w/aa06dda7)

Почему это выгодно?

📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.

💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.

💸 Знания, которые принесут плоды — навыки, востребованные в любой точке мира.

Какие навыки ты можешь развить?

💡 Математика для Data Science + Алгоритмы и структуры данных — подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.

💡 Алгоритмы и структуры данных + ML — развивай своё алгоритмическое мышление и изучай основные методы машинного обучения, чтобы создавать интеллектуальные приложения.

💡 Frontend Basic + Базовые модели ML — создай свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.

💡 Архитектуры и шаблоны проектирования + Математика для Data Science — развивай аналитическое мышление и учись проектировать устойчивые системы.

💡 Алгоритмы и структуры данных + Frontend Basic — получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.

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

🔗 Составь свой IT-маршрут (https://proglib.io/w/aa06dda7) сейчас или выбери курс по новогодней скидке.

Golang задачи с собеседований

02 Jan, 10:58


🎨 Мы создали новый канал для вдохновения — UX in GIF

На нашем новом канале мы делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь собрано в одном месте.

📌 Почему стоит подписаться на канал?

→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно воспроизвести или адаптировать.
→ Удобный способ найти вдохновение перед новым проектом.

👉 Подписывайтесь и находите вдохновение: UX in GIF (https://t.me/ux_in_gif)

Golang задачи с собеседований

31 Dec, 11:06


Пишите свои предложения в комментариях! 👇

А тем, кто хочет узнать ответ скорее, — барабанная дробь... 3

Golang задачи с собеседований

30 Dec, 23:08


🧑‍💻 Статьи для IT: как делиться и объяснять важные идеи

Напоминаем, что у нас есть бесплатный курс (https://stepik.org/course/101672/promo) для всех желающих научиться писать увлекательно — о программировании и не только.

Что это: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы курса регулярно обновляются и дополняются. Также мы отвечаем на все учебные вопросы в комментариях курса.

Golang задачи с собеседований

28 Dec, 11:18


🗺 Является ли привычка "срезать углы" при ходьбе интуитивным использованием алгоритмов?

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

С нашим курсом «Алгоритмы и структуры данных» вы научитесь эффективно решать любые сложные задачи.

🎄 Начните свой 2025 год со скидкой 35% на все курсы. Это отличное вложение уходящего года.

Golang задачи с собеседований

27 Dec, 17:21


@golangquiz

Golang задачи с собеседований

26 Dec, 13:25


Хотите стать профи в автоматизированном тестировании на JavaScript? Устали от ручного тестирования и стремитесь к развитию карьеры?

Ждем вас на курсе «JavaScript QA Engineer», с помощью которого вы сможете:

- освоить актуальные подходы и технологии в автоматизации тестирования веб-приложений;
- изучить полный ландшафт современных технологий тестирования на JS;
- понять принцип работы фреймворков и создать сильное портфолио;
- выполнять задачи от написания автотестов до встраивания их в процесс с использованием DevOps-практик;
- использовать JS-инструменты для быстрого и эффективного автоматизированного тестирования;
- работать с современными фреймворками и выстраивать архитектуру своего тестового фреймворка;
- использовать Docker и Github, освоить CI-практики и повысить свою квалификацию.

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

👉 Готовы расширить свои карьерные перспективы? Пройдите короткий тест, чтобы получить скидку на обучение и подарочные уроки: https://clck.ru/3FTW2a

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

Golang задачи с собеседований

19 Dec, 11:20


🌟 Хочешь писать код, который решает конкурентные задачи без багов? Начни с каналов в Go. Разберём устройство и применение на практике.

🗓 Открытый урок уже 25 декабря! Не упусти шанс наконец-то сделать свой код лучше.

🔍 Освоишь лучшие практики и научишься избегать ошибок, которые разрушают продуктивность приложений.

👨‍💻 Вебинар для Golang-разработчиков — и новичков, и практиков. Регистрируйся, если не хочешь стоять на месте: https://clck.ru/3FGzVw

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

Golang задачи с собеседований

18 Dec, 10:31


Oшибка при импорте нескольких пакетов: missing import path go list, missing import path syntax
Не могу импортировать несколько пакетов, пробовал переустанавливать go на последнюю версию, Код:

package main

import {
"fmt"
}

func main() {

}

Golang задачи с собеседований

11 Dec, 11:52


Ваш билет в IT: автоматизация тестирования на JavaScript

Хотите узнать о профессии, которая становится всё востребованнее? 17 декабря в 20:00 мск мы расскажем о том, как начать карьеру в автоматизации тестирования на JavaScript.

Узнайте, чем занимается автоматизатор, какие навыки для этого нужны и почему 2024 год — лучшее время, чтобы войти в IT с этой специальностью.

Профессия автоматизатора тестирования сочетает работу с современными инструментами, высокий спрос на рынке и отличные карьерные перспективы.

Спикер Татьяна Березенцева — Senior Automation QA в зарубежной компании Multilogin.

Зарегистрируйтесь на открытый урок и получите скидку на большое обучение «JavaScript QA Engineer»: https://clck.ru/3FAQUZ

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

Golang задачи с собеседований

05 Dec, 10:00


Go на Golang Meetup

Golang — это любовь, уверены в Lamoda Tech. Их гошное комьюнити насчитывает уже более 170 разработчиков. Чтобы вы могли пообщаться с экспертами и обсудить актуальные вопросы разработки, приходите на Golang Meetup 12 декабря.

В программе три интересных доклада:
◾️ «Stackless или stackful? Корутины и асинхронность в Go»
Дима Буров, Старший Go разработчик, Lamoda Tech

◾️ «Итераторы в Go 1.23: зачем они нужны, как использовать и насколько они быстрые?»
Паша Агалецкий, Ведущий инженер в платформе Авито

◾️ «Асинхронность неизбежна: как мы проектировали сервис уведомлений»
Леша Ситка, Старший Go разработчик, Lamoda Tech

Будет хардово и полезно, а приятный нетворк дополнят пицца, напитки, настольный теннис и кикер.

Когда: 12 декабря в 19:00
📍 Где: online-трансляция
🔗 Зарегистрируйтесь, чтобы выслали ссылку на трансляцию

Реклама. ООО «Ламода Тех». ИНН 7734461512

Golang задачи с собеседований

04 Dec, 16:35


Не работает консольная GO игра на другой OS windows


Сделал небольшое консольное приложение на go, собрал его под свою ОС (linux mint) оно запускается и работет нормально, Но стоит мне собрать его под виндовс 10 оно не работает

package main

import (
"fmt"
"bufio"
"log"
"math/rand"
"os"
"strconv"
"time"
"strings"
)

func main() {
i := 10

fmt.Println("Game Guess Number! (1 - 15)")
fmt.Println("You have", i, "Attempts", "\n")

for i = i; i > 0; i-- {
seconds := time.Now().UnixNano()
rand.Seed(seconds)

target := float64(rand.Intn(15) + 1)

fmt.Println("Attempt: " ,i)
fmt.Print("Your guess: ", "\n")

reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')

if err != nil {
log.Fatal(err)
}

input = strings.TrimSpace(input)
guess, err := strconv.ParseFloat(input, 64)

if err != nil {
fmt.Println("error type is not a number")
log.Fatal(err)
}

if guess == target {
fmt.Println("You Won!!!", "\n")
break
} else if guess > target {
fmt.Println("Too High", "\n")
} else if guess < target {
fmt.Println("Too Low", "\n")
}
}

if i == 0 {
fmt.Println("You lose :(", "\n")
}

fmt.Println("Game End")
}

wine GuessNumberGame.exe
0074:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Game Guess Number! (1 - 100)
You have 10 Attempts

Attempt: 10
Your guess:
2024/08/28 01:58:12 read /dev/stdin: input/output error

    ~/Документы/temps    main !1 ?1   01:58:12  ─╮
❯ 0034:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.

Golang задачи с собеседований

27 Nov, 09:05


Как писать UI-тесты, которые работают без сбоев?

На открытом вебинаре «Пишем UI-тест с помощью Playwright» 28 ноября в 20:00 мск вы познакомитесь с тонкостями тестирования интерфейсов, разберётесь с локаторами и поймёте, как Playwright помогает автоматизировать тесты.

Сэкономьте время на рутинных проверках, создавая автотесты, которые стабильно работают и обеспечивают качество продукта. Погрузитесь в мир тестирования вместе с профессионалами!

Спикер Татьяна Березенцева — Senior Automation QA в зарубежной компании Multilogin.

Все участники урока получат скидку на большое обучение «JavaScript QA Engineer».

Регистрируйтесь на вебинар и научитесь автоматизировать UI-тестирование: https://clck.ru/3EqmuR

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

Golang задачи с собеседований

26 Nov, 13:55


Как использовать gemini api в приложении?


Я чайник и пытаюсь потрогать gemini api. Делаю по инструкции.

Зашел в ai studio получил новый
Сохранил этот ключ в константу key

Далее функция

func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(key))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel(modelName)
chat := model.StartChat()
test := "hello. Are you working now?"
resp, err := chat.SendMessage(ctx, genai.Text(test))
if err != nil {
log.Fatal(err)
}
log.Println(resp.PromptFeedback)
}
Получаю nil в ответ nil. А как добиться от этого кода ответа на поставленный вопрос?

Golang задачи с собеседований

26 Nov, 13:07


⁉️ Ваши микросервисы тормозят? База данных перегружена? Решение есть — кэширование!

На открытом уроке «Кэширование в микросервисной архитектуре» мы разберём, как ускорить системы, сократить время отклика и снизить нагрузку. Вы узнаете про паттерны кэширования, типы кэшей и популярные инструменты вроде Redis и Memcached.

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

🔥 Спикер Сергей Прощаев — ведущий инженер-Java-разработчик в одной из крупнейших нефтяных компаний России.

🔴 Регистрируйтесь на вебинар 11 декабря в 20:00 мск! Урок пройдёт перед стартом курса «Microservice Architecture». Только участники получат скидку на обучение: https://clck.ru/3EpXHg

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

Golang задачи с собеседований

26 Nov, 06:27


Как выбрать файл через системный проводник?


В программе понадобилось открыть проводник и выбрать в нем файл. Как я вижу использование: при работе в терминальной программе я могу ввести опрелеленную комманду и откроется системный проводник в котором можно выбрать файл. После выбора файла в проводнике, в терминальную программу копируется путь к выбранному файлу, а проводник молча закрывается. Далее над файлом по пути осуществляются какие то действия в коде. Как это(открытие прводника и выбор в нем файла) реализовать средствами go? Пишу код и тестирую в debian, соответственно решение необходимо под unix в первую очередь

Golang задачи с собеседований

25 Nov, 12:57


Неблокирующий канал с буфером


Помогите сообразить, как сделать следующее, желательно в "го-стиле".

Есть рутина, которая запускает консольную утилиту и парсит её вывод. Данные идут порциями, их частота от меня никак не зависит. Может быть 10+ пакетов в секунду, может 1. Вторая рутина должна брать эти пакеты, немного их обработать и отправить на внешний веб-сервис.

Изначально идея была - делаем канал между этими двуми рутинами. Парсим пакет - записываем в канал - читаем с канала - отправляем. Всё хорошо, пока связь стабильная и быстрая. Как только связь теряется, тормозит - начинается затык. Данные сыпятся быстрее, чем мы можем их отправлять. Важно, что потеря части данных не критична, главное чтобы последние N пакетов держались в памяти и по возможности отправлялись.

Напрашивается что-то типа очереди с автоматическим удалением старых элементов при превышении лимита N. Первая горутина туда кладёт, вторая оттуда достаёт.

То есть другими словами, нужно сделать такой канал с буфером, который бы при записи в него не блокировал (если в канале уже N элементов - самое старое значение удаляется, новое добавляется), а при чтении - блокировал (при отсутствии данных).

Станадртный буферизированный канал не подходит - при заполненном буфере он блокирует запись.

Так как в го я новичок - трудно сообразить как такое наколхозить. Попробовал поискать по репам/гуглу - ничего похожего найти не могу.

Подскажите, куда копать, где можно подсмотреть что-то похожее?

Golang задачи с собеседований

14 Nov, 09:02


Distributed tracing в Go

Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?

Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.

Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖

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

Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉

Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2Vtzqv2K2Gv

Golang задачи с собеседований

13 Nov, 09:15


Хотите создавать масштабируемую и отказоустойчивую микросервисную архитектуру?

19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.

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

👨‍💻🛠👨🏻‍💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.

🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»: https://clck.ru/3EZnzR

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

Golang задачи с собеседований

13 Nov, 07:14


Что делают в коде %v и \n?


У нас есть программа по угадыванию числа. Не понимаю что в ней выполняют символы %v и \n.

func main() {

var number = 43

for {
var n = rand.Intn(100) + 1
if n < number {
fmt.Printf("%v слишком маленькое число.\n", n)
} else if n > number {
fmt.Printf("%v слишком большое число.\n", n)
} else {
fmt.Printf("угадал! %v\n", n)
break

Как понимаю %v проверяет число в переменной(имею ввиду область видимости for), в нашем случае число которое появилось рандомно. Какой синтаксис несет \n инфо к моменту написания вопроса не нашел.

Golang задачи с собеседований

04 Nov, 09:57


Ваши навыки JavaScript ограничиваются фронтендом? Чувствуете, что пора расширить арсенал инструментов и перейти на новый уровень?

После прохождения курса «Node.js Developer» вы сможете создавать мощные серверные приложения с использованием Express, TypeScript, GraphQL, Apollo и Nest.js. Вы станете востребованным экспертом в бэкенд-разработке и сможете применять полученные знания в реальных проектах.

Успейте попасть на повышение квалификации от OTUS и получите глубокое понимание архитектуры, работы с базами данных и разработки с TDD.

Прокачайте свои знания и откройте новые карьерные перспективы:
https://clck.ru/3EM4NA

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

Golang задачи с собеседований

01 Nov, 12:21


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

После прохождения курса «Vue.js разработчик» вы сможете создавать масштабируемые и эффективные SPA-приложения, писать чистый код на ES6/ES8/TypeScript, работать с GraphQL, Firebase и Electron, а также оптимизировать приложения для production.

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

Прокачайте свои знания и откройте новые карьерные перспективы: https://clck.ru/3ELZaT


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

Golang задачи с собеседований

01 Nov, 10:29


Какой самый больной вопрос для IT-команд? Тестирование микросервисов!

Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?

👨‍💻🛠👨🏻‍💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.

Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!

🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах: https://clck.ru/3EHisq

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

Golang задачи с собеседований

31 Oct, 11:09


Хотите узнать, как создать чат-приложение с использованием React и WebSockets?

На вебинаре вы узнаете:
- Основы WebSockets и их интеграция с React.
- Реализация функциональности чата.
- Управление состоянием и работа с хранилищем данных (обновление интерфейса при изменении состояния).

Этот вебинар будет полезен:
- JavaScript-разработчикам, которые хотят улучшить навыки работы с React и узнать особенности работы и обновления приложения в режиме реального времени.
- Frontend-разработчикам, желающим понять и использовать WebSockets для создания интерактивных приложений.
- Fullstack-разработчикам для дополнения своих знаний и получения навыков интеграции WebSocket серверов с React-приложениями.

После вебинара вы сможете:
- Настроить и управлять WebSocket соединением в React-проектах.
- Управлять состоянием в React-проектах и работать с хранилищами данных для сохранения истории сообщений.
- Применить знания для создания разнообразных приложений реального времени (чаты, системы уведомлений, онлайн-игры).

Урок пройдет 7 ноября в 20:00 мск и будет приурочен к старту большого курса «React.js Developer». После вебинара вы получите специальную цену на обучение и персональную консультацию от менеджеров!

Регистрируйтесь на открытый вебинар прямо сейчас! 👇

https://clck.ru/3EJLmy

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

Golang задачи с собеседований

30 Oct, 10:22


Как настроить кастомный GOPATH?


Коллеги, помогите разобраться. Вопрос избитый, но решить по ссылкам в сети пока не получилось (https://go.dev/wiki/SettingGOPATH).

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

ГО установлен здесь:

D:\Programm Files\Go

Мой ворскспейс здесь:

D:\Kirill_disk_D\GoWorkspace, тут три папки - bin, src, pkg

GOPATH такой:

D:\Kirill_disk_D\GoWorkspace;D:\Programm Files\Go

В каталоге D:\Kirill_disk_D\GoWorkspace\src лежит 2 пакета: customtext и test

D:\Kirill_disk_D\GoWorkspace\src\customtext\customtext.go:

package customtext

const (
NameFrst = "Kirill",
NameScnd = "Sasha"
)
D:\Kirill_disk_D\GoWorkspace\src\test\test.go:

package main

import (
"customtext"
"fmt"
)

func main() {
fmt.Println("Привет", customtext.NameFrst)
}
По запуску test.go:

$ go run "d:\Kirill_disk_D\GoWorkspace\src\test\test.go"

Не видит нужной src из GOPATH и отвечает, что нужного пакета в GOPATH по умолчанию нет:

test.go:4:2: package customtext is not in std (D:\Programm Files\Go\src\customtext)

У меня стоит версия go1.23.0, винда 11.

По команде в cmd:

C:\Users\Kirill>go env -w GOPATH=d:\Kirill_disk_D\GoWorkspace

Отвечает, что на даст переопределить GOPATH:

warning: go env -w GOPATH=... does not override conflicting OS environment variable

Вопрос: как сделать так, чтобы Go видел пакеты из кастомного GOPATH? Что я делаю не так? Заранее спасибо!

Golang задачи с собеседований

28 Oct, 10:21


Как исключить зависимость для определенной ос?

Написал программу у которой есть функционал вызова диалога выбора файла через gtk3. Так же у этой программы есть режим только текстовый, без диалога выбора файла. Но так как я использую в этой программе импорт который дает функционал вызова окон, то в зависимостях этот пакет указан и, напрмер, для андроид эта программа уже не собирается(gtk3 нет в репозиоториях термукса), хотя в андроиде можно спокойно использовать исключительно текстовый вариант. А есть ли какой то механизм, позволяющий, например, указать компилятору, что при сборке в ос андроид(чрез термукс) не нужно требовать gtk3. Идеально если можно это сделать добавив что то в .mod файл

Golang задачи с собеседований

25 Oct, 10:20


Получение структуры по ключу из Redis Golang


Имею подобную структуру

type myStruct struct {
TotalCount int json:"inventory_total_count"
TotalPrice int json:"inventory_total_price"
GameList []string json:"game_list"
UserInfo UserInformation json:"user_info"
GameInventory map[string]InventoryGame json:"inventory"
}

type InventoryGame struct {
GameAssetsTotalCount int json:"game_assets_total_count"
GameAssetsTotalPrice int json:"game_assets_total_price"
GameID string json:"gameid"
Assets []InventoryAssets json:"assets"
}

type InventoryAssets struct {
ClassID string json:"classid"
InstanceID string json:"instanceid"
IconURL string json:"icon_url"
Name string json:"name"
MarketHashName string json:"market_hash_name"
AssetRarity string json:"rarity"
AssetBorderColor string json:"border_color"
AssetExterior string json:"exterior"
AssetQuality string json:"asset_quality"
AppID int json:"appid"
AssetPrice int json:"asset_price"
Marketable int json:"marketable"
AssetCount int json:"item_count"
AssetTotalCost int json:"asset_total_price"
}
после того как ее создаю я, записываю в хранилище Redis следующим образом

err := client.Set(ctx, "key", myStruct, time.Minute)
// отработка err
далее я пытаюсь достать данную структуру следующим образом

newStruct := myStruct{}
err := client.Get(ctx, "key").Scan(&newStruct)
// отработка err
в итоге на выходе получается пустая структура

{0 0 [] { } map[]}
ps. методы структуры "MarshalBinary" и "UnmarshalBinary" прописаны.

Использую go-redis/v9.

Как мне правильно достать структуру из хранилища редис?

Golang задачи с собеседований

23 Oct, 10:20


Не запускается файл с кодом

Устаналивал VS Code и сопутствующие дополнения к нему по инструкции яндекс-лицея, при попытке запуска кода через команду go run test.go выдает ошибку:

go : Имя "go" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.

Golang задачи с собеседований

22 Oct, 08:29


Podlodka Go Crew снова в деле! Это онлайн-конференция, где обсуждаются актуальные темы для go-разработчиков.

В новом сезоне особое внимание уделяется архитектуре приложений на Golang. Сессии проводятся в удобное время — утром и вечером.

Чего ожидать?
- «От 1000 скриптов на Bash к (микро)сервисам на Go» — Максим Набоких поделится опытом миграции на Go в рамках крупнейшей kubernetes-платформы.
- «System design: Saga from zero to Temporal» — Антон Цитульский рассмотрит принципы оркестрации и хореографии, используя Temporal, и объяснит, как управлять бизнес-процессами в сложных системах.
- «Спецификации и код: Как выбрать правильный путь между генерацией и интеграцией?» — Леонид Ченский покажет плюсы и минусы разных подходов к работе с API-спецификациями и представит обзор инструментов, которые помогут с автоматизацией.

Конференция создана для тех, кто ищет не только знания, но и решения, которые можно сразу внедрять в проекты.

Билеты в продаже на сайте: https://podlodka.io/gocrew

Golang задачи с собеседований

21 Oct, 10:19


HTTPS запрос к серверам VK для загрузки видео


Пишу код для загрузки видео из VK без использования VK API. Задача стоит следующая: брать ссылку на видео, далее отправить запрос по этому URL и получить в ответ страницу с просмотром этого видео. То есть симулировать запрос от реального браузера.

Для этого я попробовал скопировать все header'ы из запроса реального браузера следующим образом:

req, err := http.NewRequest("GET", URL, nil)

req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 YaBrowser/24.7.0.0 Safari/537.36")
req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
req.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
req.Header.Set("Accept-Language", "ru,en;q=0.9")
req.Header.Set("Cache-Control", "max-age=0")

req.Header.Set("Sec-Ch-Ua", "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"YaBrowser\";v=\"24.7\", \"Yowser\";v=\"2.5\"")
req.Header.Set("Sec-Ch-Ua-Mobile", "?0")
req.Header.Set("Sec-Ch-Ua-Platform", "\"macOS\"")
req.Header.Set("Sec-Fetch-Dest", "document")
req.Header.Set("Sec-Fetch-Mode", "navigate")
req.Header.Set("Sec-Fetch-Site", "same-origin")

req.Header.Set("Upgrade-Insecure-Requests", "1")

req.Header.Set("Priority", "u=0, I")
В ответ ожидал увидеть страницу с видео для дальнейшей работы, но фактически пришла страница, в которой мне предлагают обновить/установить свежую версию браузера.
Вопрос в следующем: как я могу эмулировать запрос от «современного» браузера в Go?

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

const URL = "https://m.vk.com/video-85466065_456241727"

req, err := http.NewRequest("GET", URL, nil)

req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 YaBrowser/24.7.0.0 Safari/537.36")
req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
req.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
req.Header.Set("Accept-Language", "ru,en;q=0.9")
req.Header.Set("Cache-Control", "max-age=0")

req.Header.Set("Sec-Ch-Ua", "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"YaBrowser\";v=\"24.7\", \"Yowser\";v=\"2.5\"")
req.Header.Set("Sec-Ch-Ua-Mobile", "?0")
req.Header.Set("Sec-Ch-Ua-Platform", "\"macOS\"")
req.Header.Set("Sec-Fetch-Dest", "document")
req.Header.Set("Sec-Fetch-Mode", "navigate")
req.Header.Set("Sec-Fetch-Site", "same-origin")

req.Header.Set("Upgrade-Insecure-Requests", "1")

req.Header.Set("Priority", "u=0, i")

client := &http.Client{}

res, err := client.Do(req)

Golang задачи с собеседований

18 Oct, 09:24


Хотите узнать, как реализовать идеальную хэш-таблицу, которая работает за О(L) время?

Ждем вас на открытом вебинаре 21 октября в 20:00 мск, где мы разберем:

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

👨‍💻🛠👨🏻‍💻 Урок для Junior-разработчиков на любых языках программирования.

Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.

Встречаемся в преддверии старта курса «Алгоритмы и структуры данных». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://clck.ru/3E2VYu

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

Golang задачи с собеседований

18 Oct, 06:00


📌 Save the date: мы проводим второй Yandex Open Source Jam!

📆 23 октября мы организуем (не)конференцию, посвящённую открытому коду и всему, что его окружает. На этот раз приезжаем в Санкт-Петербург!

Поговорим об опенсорсе и людях, которые его делают. В программе: анонсы, экспозона, дискуссии, афтерпати и, конечно, доклады.

🔴 Никита Соболев, фултайм-разработчик опенсорса, раскроет секреты своего десятилетнего опыта

🔴 Антон Фролов, ML-инженер из Яндекса, покажет, как мы ускоряем обучение нейросетей с помощью YaFSDP

🔴 Антон Полухин, руководитель группы разработки общих компонент из Яндекса, расскажет, как мы строим опенсорс-проект userver

🔴 Николай Воронцов, выпускающий редактор в N + 1, обсудит, как опенсорс помогает учёным и радует популяризаторов науки

📎 Регистрируйтесь на сайте — там же можно найти подробную программу выступлений!

Golang задачи с собеседований

18 Oct, 05:36


Выдает ошибку при решении задачи на Golang

Условие задачи:

Дан неотсортированный слайс целых чисел. Напишите функцию UnderLimit(nums []int, limit int, n int) ([]int, error), которая будет возвращать первые n (либо меньше, если остальные не подходят) элементов, которые меньше limit. В случае ошибки функция должна вернуть nil и описание ошибки.

TEST`s

package main

import (
"slices"
"testing"
)

func TestUnderLimit(t *testing.T) {
type test struct {
nums []int
n int
limit int
expected []int
wantError bool
}

tests := []test{
{
nums: []int{4, 7, 89, 3, 21, 2, 5, 7, 32, 4, 6, 8, 0, 3, 4, 6, 2, 115, 12},
n: 5,
limit: 3,
expected: []int{2, 0, 2},
wantError: false,
},
{
nums: nil,
wantError: true,
},
{
nums: []int{},
n: 5,
limit: 3,
expected: []int{},
wantError: false,
},
{
nums: []int{3, 5, 6},
n: 5,
limit: 10,
expected: []int{3, 5, 6},
wantError: false,
},
{
nums: []int{-13, 0, 6},
n: 1,
limit: -5,
expected: []int{-13},
wantError: false,
},
{
nums: []int{},
n: -1,
limit: 5,
wantError: true,
},
}

for _, tc := range tests {
result, err := UnderLimit(tc.nums, tc.limit, tc.n)
if tc.wantError {
if err == nil {
t.Fatalf("expec... File is too long to be displayed fully
Моё решение:

func UnderLimit(nums []int, limit int, n int) ([]int, error) {
if n < 0 {
return nil, fmt.Errorf("n cannot be negative")
} else if n == 0 {
result := make([]int, 0, 0)
return result, nil
}

result := make([]int, 0, n)
count := 0
for _, num := range nums {
if num < limit {
result = append(result, num)
count++
}
if count == n {
return result, nil
}
}
return result, nil
}
Но выводится ошибка:

--- FAIL: TestUnderLimit (0.00s)
source_test.go:62: expected an error
FAIL

Golang задачи с собеседований

17 Oct, 15:01


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

Курс Практикума подойдёт тем, кто уже знаком с Go и хочет упорядочить свои знания, а также тем, кто хочет перейти на Go с другого языка программирования.

◾️Вы сделаете 3 проекта с нуля и добавите их в портфолио
◾️Научитесь писать сложные приложения на Go
◾️Освоите архитектурные паттерны

Начните курс бесплатно, а если понравится, платите как удобно: в рассрочку или целиком.

Начать курс бесплатно

Golang задачи с собеседований

16 Oct, 10:17


Pаспознавания адресов/геоданных из текста


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

Какие есть проверенные методы, библиотеки или подходы для решения подобной задачи? Интересуют варианты на различных языках программирования (особенно Python), включая машинное обучение и регулярные выражения. Буду благодарен за любые советы, рекомендации или ссылки на готовые решения!

Golang задачи с собеседований

14 Oct, 11:16


Всем, кто связан с разработкой, архитектурой или управлением IT-проектами!
Хотите создавать решения, которые выдерживают сотни тысяч RPS?


14 октября специалист по высоконагруженным сервисам в крупном банке расскажет про обучение на онлайн-курсе «Архитектор высоких нагрузок» в OTUS.

Вы узнаете:
- о программе обучения на курсе «Архитектор высоких нагрузок»
- о том, какой уровень знаний необходим для поступления на курс
- о перспективах самой профессии
- о ваших перспективах в качестве архитектора высоких нагрузок

Также вы увидите проектные работы выпускников курса.

🗓 14 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Highload Architect»

🔴 Записаться на открытый урок: https://clck.ru/3DvL95

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

Golang задачи с собеседований

14 Oct, 10:06


Как отсортировать map по порядку, указанному в массиве ключей?


Есть map, а точнее map[string]int

По умолчанию, как я понял, Golang сортирует элементы по ключу в алфавитном порядке. А как отсортировать map по ключам в заданном порядке?

Этот код:

package main

import (
"fmt"
)

func main() {
output := make(map[string]int)

basket := map[string]int{
"orange": 5,
"apple": 7,
"mango": 3,
"strawberry": 9,
}

//нужный порядок
keys := []string{
"strawberry",
"mango",
"orange",
}

for _, k := range keys {
output[k] = basket[k]
}

fmt.Printf("вывод output : %+v \n", output)
}
выдаст с ключами строки в алфавитном порядке:

mango, orange, strawberry

Golang задачи с собеседований

09 Oct, 09:30


🚀 Golang meetup - online - хардкод, миграция, контракты и DDD"

Модератор — Виталий Левченко
Wildberries, engineering manager

Эксперт — Даниил Подольский
YADRO, эксперт по разработке ПО

Программа митапа:

✔️ Платформенный сервис без хардкода: CEL в конфиге и как его готовить — Артемий Андрианов, YADRO
Создание безопасной песочницы для настройки параметров приложения и преимущества конфигурации на этапе сборки.

✔️ Как продать Go в вашей компании и привить новый стек — Алексей Борисов, Туту
Опыт миграции с PHP на Go и как договориться с бизнесом и командой.

✔️ Design by Contract на минималках для Go Александр Иванов, YADRO
Применение самодельных assertions для соблюдения контрактов и улучшения качества кода.

✔️ DDD в Go — Дмитрий Гонозов, Yandex
Опыт применения Domain-driven Design для новых проектов и рефакторинга legacy.



🗓 16 октября, начало в 19:00 мск, Среда

🌐 ОНЛАЙН

Ссылка на регистрацию

Golang задачи с собеседований

09 Oct, 09:00


Гарантия доставки сообщений

Есть веб-приложение на React, которое регулярно обновляет данные с сервера, написанного на Go. Я использую setInterval для выполнения HTTP-запросов каждую минуту. Я переживаю о производительности и нагрузке на сервер. Существуют ли более эффективные методы для поддержания актуальности данных?

Минимальный пример:

package main

import (
"encoding/json"
"net/http"
"time"
)

type Data struct {
Message string json:"message"
}

func handler(w http.ResponseWriter, r *http.Request) {
data := Data{Message: "Hello, World!"}
json.NewEncoder(w).Encode(data)
}

func main() {
http.HandleFunc("/data", handler)
http.ListenAndServe(":8080", nil)
}
Приложение на реакте:

import React, { useEffect, useState } from "react";

function App() {
const [data, setData] = useState(null);

useEffect(() => {
const fetchData = async () => {
const response = await fetch("http://localhost:8080/data");
const result = await response.json();
setData(result);
};

fetchData();
const interval = setInterval(fetchData, 60000); // Обновление данных каждую минуту

return () => clearInterval(interval);
}, []);

return (
<div>
<h1>{data ? data.message : "Loading..."}</h1>
</div>
);
}

export default App;

Golang задачи с собеседований

07 Oct, 08:59


проблема с import в GO

Я только учусь и не хочу понять как это работает. У меня есть 2 файла c названиями main.go и testBD.go они находятся в одной папке и поэтому в начале этих файлов написал package main В файле testBD.go содержится функция для генерации слайса с элементами чисел от 0 до 500:

package main

func GenSlice(testSlice []int) []int {
resSlice := testSlice
for i := 0; i < 500; i++ {
resSlice = append(resSlice, i)
}
return resSlice
}

func main() {
nowTime := time.Now()
nums := []int{}
fmt.Println(GenSlice(nums))
afterTime := time.Now().Sub(nowTime)
fmt.Println("Времени ушло", afterTime)
}
в функции main() я просто проверял время работы цикла А в файле main.go есть следующий код:

package main

import (
"fmt"
)

func main() {
nums := []int{}
fmt.Println(GenSlice(nums))
}
Я ожидал увидеть просто вывод чисел в слайсе от 0 до 499 но получаю ошибку
# command-line-arguments .\main.go:9:14: undefined: GenSlice

Golang задачи с собеседований

04 Oct, 07:01


Golang. Хранение паролей для доступа к базе данных безопасно

Собираюсь написать свой первый веб-сервис на Go. Встал вопрос безопасного хранения пароля к базе данных. Если следовать этому гайду https://go.dev/doc/tutorial/database-access, то нужно сделать переменную окружения.

Есть ли более безопасный способ хранения пароля к базе данных, чем переменная окружения применительно к веб-сервису написанному на Golang?

Golang задачи с собеседований

02 Oct, 08:57


Telegram бот падает с ошибкой, на вход приходит сообщение содержащие nil

В телеграмм бот отправляю команду Добавить Тег, она должна вызвать функцию AddTag, но получаю ошибку

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0xd8668b]

goroutine 1 [running]:
main.AddTag(0xc00009b220, 0xc0000a9688)
D:/Programming/GO/test_bot_api/bot_api.go:174 +0x8b
main.bot_main()
D:/Programming/GO/test_bot_api/bot_api.go:82 +0x358
main.main()
D:/Programming/GO/test_bot_api/bot_api.go:196 +0xf
exit status
Как я понимаю это происходит из-за того, что после отправки команды (с кнопки или просто вводом с клавиатуры) я получаю на вход подобное пустое сообщение:

&{0 <nil> 0 <nil> <nil> 0 0 false <nil> 0 false [] <nil> <nil> <nil> [] <nil> <nil> <nil> <nil> [] <nil> <nil> <nil> <nil> <nil> <nil> [] [] false false false false <nil> 0 0 <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil>}
После получения программа сразу падает.

Код

func AddTag(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
if message == nil {
return
}
fmt.Println(message)

msg := tgbotapi.NewMessage(message.Chat.ID, "Введите цифру:")
bot.Send(msg)

inputNumber := 0

for {
input := message.Text

if _, err := strconv.Atoi(input); err == nil {
inputNumber, _ = strconv.Atoi(input)
break
} else {
errMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка! Можно использовать только цифры. Пожалуйста, введите цифру:")
bot.Send(errMsg)
}
}

responseMsg := tgbotapi.NewMessage(message.Chat.ID, "Вы ввели числовое значение: "+strconv.Itoa(inputNumber))
bot.Send(responseMsg)
}

func bot_main() {

bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_APITOKEN"))
if err != nil {
log.Panic(err)
}

updateConfig := tgbotapi.NewUpdate(0)
updateConfig.Timeout = 60

updates := bot.GetUpdatesChan(updateConfig)

for update := range updates {
if update.Message == nil { // игнорировать сообщения, не являющиеся текстовыми
continue
}

allowed, err := isTelegramIDAllowed(update.Message.Chat.ID)
if err != nil {
bot.Send(tgbotapi.NewMessage(update.Message.Chat.ID, "Ты куда зашёл, дружок?"))
continue
}

if !allowed {
bot.Send(tgbotapi.NewMessage(update.Message.Chat.ID, "Вам не разрешено отправлять сообщения этому боту!"))
continue
}

userID := update.Message.From.ID

msg := tgbotapi.NewMessage(userID, "Привет, я бот Telegram на Go! Чем могу помочь?")

switch update.Message.Text {
case "/start":
msg.ReplyMarkup = numericKeyboard
case "Список Тегов":
msg.ParseMode = "HTML"
msg.Text = GetTag()
case "Добавить Тег":
AddTag(bot, &tgbotapi.Message{})
case "close":
msg.ReplyMarkup = tgbotapi.NewRemoveKeyboard(true)
}

if _, err := bot.Send(msg); err != nil {
log.Panic(err)
}
}
}
Судя по логу паники. Вызываем через case

case "Добавить Тег":
AddTag(bot, &tgbotapi.Message{})
Начинает работать AddTag, проходит проверка, fmt вывод сообщение которое пришло на вход и на сл строчке выходит ошибка

func AddTag(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
if message == nil {
return
}
fmt.Println(message)

msg := tgbotapi.NewMessage(message.Chat.ID, "Введите цифру:")
Есть еще функция проверки наличия id отправившего в базе, но она нормально отрабатывает. проверку проходит, судя по указанию в ошибки падает именно на входе в функцию AddTag.

Как я понимаю надо как то проигнорировать это сообщения. И от куда оно вообще берется?

Golang задачи с собеседований

30 Sep, 11:56


Как append() влияет на len и cap слайса (slice) в Go?

Как функция append() влияет на длину (len) и вместимость (cap) слайса (slice) в гошке. Изменения cap слайса (slice) происходят нелинейно по отношению к количеству добавленных элементов. Почему изменяется cap среза после каждого вызова append?

Также возникает вопрос, можно ли этим как-нибудь управлять?

package main

import "fmt"

func main() {
// Создаем срез с начальной длиной 0 и вместимостью 3
slice := make([]int, 0, 3)
fmt.Printf("Initial len: %d, cap: %d\n", len(slice), cap(slice)) // len: 0, cap: 3

// Добавляем первый элемент в срез
slice = append(slice, 1)
fmt.Printf("After append 1: len: %d, cap: %d\n", len(slice), cap(slice)) // len: 1, cap: 3

// Добавляем второй элемент в срез
slice = append(slice, 2)
fmt.Printf("After append 2: len: %d, cap: %d\n", len(slice), cap(slice)) // len: 2, cap: 3

// Добавляем третий элемент в срез
slice = append(slice, 3)
fmt.Printf("After append 3: len: %d, cap: %d\n", len(slice), cap(slice)) // len: 3, cap: 3

// Добавляем четвертый элемент, что приводит к увеличению вместимости среза
slice = append(slice, 4)
// Здесь cap может удвоиться до 6, но точное значение может зависеть от реализации
fmt.Printf("After append 4: len: %d, cap: %d\n", len(slice), cap(slice)) // len: 4, cap: 6
}

Golang задачи с собеседований

30 Sep, 07:18


Highload, системный дизайн, производительность и масштабирование

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

🌐 С курсом «Системный дизайн высоконагруженных проектов» вы:

▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое)
▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд.
▪️ научитесь планировать нагрузку и связывать
бизнес-показатели с нефункциональными требованиями к системе
▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью

Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, презентации домашних проектов).

🥸 Кто мы: школа Devhands, основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и и управления глобальными технологическими организациями, член программного комитета Highload.

🗓 Старт 22-го октября, изучаем программу, записываемся здесь

Реклама. ИП Рыбак А.А. ИНН 771407709607 erid: 2VtzqutyuX6

Golang задачи с собеседований

27 Sep, 08:56


goroutine 51 [running]:
main.botMain.func5(0xc0001844d0, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...)
D:/Programming/GO/telego_bot/main.go:154 +0x32
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdateWithMiddlewares(0xc0001f8200, 0xc0001844d0, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...)
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:74 +0x283
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdateWithMiddlewares(0xc0001f8100, 0xc0001844d0, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...)
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:90 +0x3b0
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdateWithMiddlewares.func1.1()
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:76 +0x92
sync.(*Once).doSlow(0x1351691?, 0xb?)
C:/Program Files/Go/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
C:/Program Files/Go/src/sync/once.go:65
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdateWithMiddlewares.func1(0x1327e00?, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...})
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:75 +0x89
main.botMain.func4(0xc0001844d0, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...)
D:/Programming/GO/telego_bot/main.go:148 +0xbf
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdateWithMiddlewares(0xc0001f8100, 0xc0001844d0, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...}, ...)
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:74 +0x283
github.com/mymmrac/telego/telegohandler.(*HandlerGroup).processUpdate(0xc0001f8100, 0x0?, {0x33dc95ba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...})
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/handler_group.go:50 +0x9e
github.com/mymmrac/telego/telegohandler.(*BotHandler).Start.func1()
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/bot_handler.go:100 +0x1e5
created by github.com/mymmrac/telego/telegohandler.(*BotHandler).Start in goroutine 1
C:/Users/livsi/go/pkg/mod/github.com/mymmrac/[email protected]/telegohandler/bot_handler.go:89 +0x165
exit status 2

Golang задачи с собеседований

27 Sep, 08:56


Как принять сообщение от пользователя и сохранить в переменную Telegram bot?

Делаю бота на библиотеки TeleGO, и ни как не пойму как мне принять сообщение от пользователя, записать и передать в другую функцию.

В моем понимании должно быть так, с callback вызываем цепочку

Запрос цифры от пользователя
пользователь вводит и получаем переменную tag
выводим консоль значение переменой tag
Вот код который я использую.

bh.Use(func(bot *telego.Bot, update telego.Update, next th.Handler) {
bot.SendMessage(tu.Message(tu.ID(update.CallbackQuery.From.ID), "Сажи число!"))
next(bot, update)
})

task := bh.Group(th.CallbackDataEqual("addTag"))

task.Use(func(bot *telego.Bot, update telego.Update, next th.Handler) {
num := update.Message.Text
fmt.Println(num)
if len(update.Message.Text) > 0 {
next(bot, update)
}
})

// Handle updates on a group
task.HandleMessage(func(bot *telego.Bot, message telego.Message, ) {
fmt.Println(message)
})
По ошибке, я вижу, чт омы сразу получаем сообщение от бота, пользователь ввести ничего не успевает и программа падает, тк пришел указатель на nil.

[Mon May 27 14:34:18 MSK 2024] DEBUG API response sendMessage: Ok: true, Err: [<nil>], Result: {"message_id":1169,"from":{"id":6964563095,"is_bot":true,"first_name":"livsi_games_news","username":"livsi_games_news_bot"},"chat":{"id":375152786,"first_name":"\u041b\u0435\u043e\u043d\u0438\u0434","last_name":"\u0414\u0435\u043c\u0438\u043d","username":"Livsi_MD_NN","type":"private"},"date":1716809660,"text":"\u0421\u0430\u0436\u0438 \u0447\u0438\u0441\u043b\u043e!"}
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x118 pc=0x12bcdb2]

Golang задачи с собеседований

25 Sep, 08:54


Не могу получить параметры запроса

Есть такой шаблон

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/auth", method="post">
<input type="text" name="issuer" placeholder="login">
<input type="password", name="password" placeholder="password">
<input type="text" name="service" value={{.Service}} hidden >
<input type="submit" value="login">
</form>
</body>
</html>
Он лежит на сервере по пути /auth и вызывается исключительно методом GET

router.HandleFunc("/auth", controllers.MWDisplayHTML).Methods(http.MethodGet)
Ожидаемое поведение:

Ввожу логин и пароль, нажимаю "login" и происходит запрос post на сервер.

func MWDisplayHTML(w http.ResponseWriter, r *http.Request) {
_, cancel := context.WithTimeout(context.Background(), time.Second*4)
defer cancel()
templ, err := template.ParseFiles(consts.LoginHTMLPath)
if err != nil {
log.Println(err)
return
}
description, err := getDecriptionFromReq(r)
if err != nil {
return
}
serviceTempl := CustomTemplate{Service: description}
err = templ.Execute(w, serviceTempl)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
}
На обработчике post запросов с указанного шаблона висит обработчик, который пытается получить значение полей issuer и password. Вот функция которую я вызываю в этом обработчике для получения поля issuer

func getIssuerNameFromRequest(r *http.Request) (string, error) {
uname := r.URL.Query().Get(consts.IssuerKey)
if len(uname) < consts.MinIndx {
return consts.Empty, fmt.Errorf("%s", errs.ErrNameFieldIsEmpty)
}
return uname, nil
}
Но почему то, когда я ввожу логин и пароль то r.url.query.get не находит указанного поля. Раньше все работало, не могу понять что изменилось

Golang задачи с собеседований

23 Sep, 08:53


Как распечатать переменные структуры в консоли?

Как напечатать в консоли все поля этой структуры в Golang?

type Project struct {
Hash string json:"hash"
Name string json:"name"
Data Data json:"data"
Joins Joins json:"joins"
}

Golang задачи с собеседований

20 Sep, 11:28


CodeRetreat — четырехдневный кэмп для разработчиков в Черногории, идеальный микс отдыха в горах, атмосферы летнего лагеря, интересных воркшопов и полезного нетворка.
13 — 16 октября будет смена для гоферов! Ведущие Андрей Солдатенко, Артемий Рябинков и Искандер Шарипов. Будем разбираться с Kubernetes операторами, экспериментировать с запуском Pytorch моделей на Go, и писать игры. А по домам разъедемся с контактами новых друзей, фотографиями захватывающих видов и пачкой ярких впечатлений.
Есть еще 6 мест, подробности: https://coderetreat.me/golang