Библиотека задач по Go | тесты, код, задания
5.97K subscribers
480 photos
3 videos
223 links
Задачи и тесты по Go для тренировки и обучения.

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

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

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

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что делает CGO_ENABLED=0

👻 — Включает поддержку CGo, позволяя Go-коду использовать C-функции.
🌚 — Уменьшает производительность Go-кода, так как CGo быстрее.
⚡️ — Отключает поддержку CGo, создавая полностью независимый бинарник.
🎉 — Требует, чтобы все зависимости были написаны на чистом Go.
👾 — Узнать ответ

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой пакет всегда нужен для создания исполняемого Go-приложения

👻 — fmt
🌚 — os
⚡️ — utils
🎉 — main

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой идентификатор доступен из другого пакета

👻 — func calculateSum(a, b int) int {}
🌚 — func CalculateSum(a, b int) int {}
⚡️ — private func CalculateSum(a, b int) int {}
🎉 — func (s *Sum) calculate() int {}

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает errors.Is(err, ErrNotFound)

👻 — Проверяет, является ли err экземпляром ErrNotFound, включая обёрнутые ошибки.
🌚 — Проверяет, является ли err той же переменной, что и ErrNotFound
⚡️ — Всегда возвращает false, так как errors.Is() не существует
🎉 — Это устаревший метод, теперь используется err == ErrNotFound

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой тип данных получит переменная var x = 42.5

👻 — int
🌚 — float32
⚡️ — float64
🎉 — double

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли передавать канал в функцию как аргумент

⚡️ — Да, можно передать в функции
👻 — Нет, каналы нельзя передавать в функции
🌚 — Да, но только если канал объявлен как chan int

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какое сообщение будет выведено при выполнении этого кода

👻 — "Получено: Данные получены"
🌚 — "Тайм-аут: данные не пришли вовремя"
⚡️ — Ошибка компиляции
🎉 — Программа зависнет

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой объект требуется для создания sync.Cond

👻sync.WaitGroup
🌚sync.ProgLib
⚡️sync.Mutex или sync.RWMutex
🎉sync.AtomicInt

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда следует использовать директиву //go:linkname

👻 — Когда нужно получить доступ к приватным методам и переменным в другом пакете для тестирования.
🌚 — Когда необходимо вызвать внешние функции из других языков программирования.
⚡️ — Когда нужно скрыть функции и переменные от внешнего кода.
🎉 — Когда требуется установить ограничения доступа между пакетами.

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код

👻 — 0
🌚 — a
⚡️ — [97 98 99]
🎉 — 97

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Как оставлять комментарии в чате нашего канала

В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.

⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.

Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.

Как присоединиться к чату, чтобы бот вас не забанил

— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат

После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.

❗️ Если вас все-таки забанили

— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу

Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.

👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произойдёт, если передать в reflect.TypeOf() пустой интерфейс?

👻 — Вызовет ошибку компиляции.
🌚 — Это вернёт тип interface{}.
⚡️ — Вернёт nil.
🎉 — Вернёт тип void.

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие задачи ждёте на следующей неделе

👍🏼Базовая классика: каналы, горутины, интерфейсы — всё, что спрашивают на каждом втором собесе
🤔Редкие, но важные темы: memory layout, race conditions, GC-tвики — то, что отличает джуна от сеньора
🔥Практика: задачки, мини-проекты, реальные кейсы, где defer или select решают судьбу всего приложения

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой модели планирования горутин следует Go

👻 — M:1 (Много горутин на один поток)
🌚 — M:N (Много горутин на много потоков)
⚡️ — 1:1 (Один поток на одну горутину)
🎉 — N:100 (Много потоков на сто горутин)

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Что означает runtime.GOMAXPROCS(4)

👻 — Это ограничение на количество горутин, которые могут быть выполнены одновременно.
🌚 — Это настройка для распределения горутин по всем доступным процессорам.
⚡️ — Это параметр, который ограничивает количество потоков в программе.
🎉 — Это настройка, определяющая количество ядер процессора, которые Go может использовать.

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код

👻 — 0 0 0 0
🌚 — 0 1 0 1
⚡️ — 0 1 2 3
🎉 — 1 2 3 4

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM