❓ Каково назначение CGO_ENABLED=0?
👻 — Включает использование CGo, позволяя коду на Go обращаться к C-функциям.
🌚 — Уменьшает производительность Go-кода, поскольку CGo работает быстрее.
⚡️ — Отключает CGo, создавая полностью независимый бинарный файл.
🎉 — Требует, чтобы все зависимости были написаны на чистом Go.
👾 — Узнать ответ
🐸Библиотека задач по Go
👻 — Включает использование CGo, позволяя коду на Go обращаться к C-функциям.
🌚 — Уменьшает производительность Go-кода, поскольку CGo работает быстрее.
⚡️ — Отключает CGo, создавая полностью независимый бинарный файл.
🎉 — Требует, чтобы все зависимости были написаны на чистом Go.
👾 — Узнать ответ
🐸Библиотека задач по Go
✏️ Создайте ограничитель запросов (Rate Limiter)
Задача:
• Необходимо разработать ограничитель запросов, который будет ограничивать количество запросов от одного клиента не более 5 раз в секунду.
• Запросы, которые превышают установленный лимит, должны быть заблокированы.
Решение в картинках ⬆️
🐸Библиотека задач по Go
Задача:
• Необходимо разработать ограничитель запросов, который будет ограничивать количество запросов от одного клиента не более 5 раз в секунду.
• Запросы, которые превышают установленный лимит, должны быть заблокированы.
Решение в картинках ⬆️
🐸Библиотека задач по Go
Какой пакет необходим для разработки исполняемого приложения на Go?
Библиотека задач по Go.
Библиотека задач по Go.
Какой идентификатор можно использовать из другого пакета?
👻 — 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
👻 — 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
❓ Что проверяет функция errors.Is(err, ErrNotFound)?
👻 — Она определяет, является ли err экземпляром ErrNotFound, включая обёрнутые ошибки.
🌚 — Она проверяет, совпадает ли err с переменной ErrNotFound.
⚡️ — Она всегда возвращает false, так как функции errors.Is() не существует.
🎉 — Это устаревший метод, теперь используется сравнение err == ErrNotFound.
🐸 Библиотека задач по Go
👻 — Она определяет, является ли err экземпляром ErrNotFound, включая обёрнутые ошибки.
🌚 — Она проверяет, совпадает ли err с переменной ErrNotFound.
⚡️ — Она всегда возвращает false, так как функции errors.Is() не существует.
🎉 — Это устаревший метод, теперь используется сравнение err == ErrNotFound.
🐸 Библиотека задач по Go
❓ Как вам задачи прошедшей недели
Anonymous Poll
9%
Сложновато 😣
38%
В самый раз 👍
58%
Слишком просто, надо бы сложнее 👀
Можно ли передавать канал в функцию как аргумент?
— Да, можно передать в функции.
— Нет, каналы нельзя передавать в функции.
— Да, но только если канал объявлен как chan int.
Библиотека задач по Go.
— Да, можно передать в функции.
— Нет, каналы нельзя передавать в функции.
— Да, но только если канал объявлен как chan int.
Библиотека задач по Go.
Какой объект нужен для создания sync.Cond?
— sync.WaitGroup
— sync.ProgLib
— sync.Mutex или sync.RWMutex
— sync.AtomicInt
Библиотека задач по Go.
— sync.WaitGroup
— sync.ProgLib
— sync.Mutex или sync.RWMutex
— sync.AtomicInt
Библиотека задач по Go.
Когда стоит применять директиву //go:linkname?
Когда требуется доступ к закрытым методам и переменным в других пакетах для тестирования
Когда необходимо вызывать внешние функции из других языков программирования
Когда нужно скрыть функции и переменные от кода вне пакета
Когда необходимо установить ограничения доступа между пакетами
Библиотека задач по Go
Когда требуется доступ к закрытым методам и переменным в других пакетах для тестирования
Когда необходимо вызывать внешние функции из других языков программирования
Когда нужно скрыть функции и переменные от кода вне пакета
Когда необходимо установить ограничения доступа между пакетами
Библиотека задач по Go
💬 Как оставлять комментарии в чате нашего канала
В нашем чате работает бот Shieldy, который защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Многие сталкиваются с проблемой: вы нажимаете «Прокомментировать» под постом, пишете что-то, а потом получаете бан и не можете комментировать.
❓Почему это происходит: Shieldy отправляет капчу в общий чат, а не в комментарии под конкретным постом. Поэтому капчу можно не заметить, не ответить на нее, и бот автоматически заблокирует вас.
✅ Как присоединиться к чату, чтобы избежать бана от бота
— Зайдите в описание канала и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение, и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас всё-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Администраторы канала не могут ускорить процесс, бот автоматически снимет блокировку через пару минут. Мы понимаем, что эта система не идеальна и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
В нашем чате работает бот Shieldy, который защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Многие сталкиваются с проблемой: вы нажимаете «Прокомментировать» под постом, пишете что-то, а потом получаете бан и не можете комментировать.
❓Почему это происходит: Shieldy отправляет капчу в общий чат, а не в комментарии под конкретным постом. Поэтому капчу можно не заметить, не ответить на нее, и бот автоматически заблокирует вас.
✅ Как присоединиться к чату, чтобы избежать бана от бота
— Зайдите в описание канала и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение, и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас всё-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Администраторы канала не могут ускорить процесс, бот автоматически снимет блокировку через пару минут. Мы понимаем, что эта система не идеальна и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
❓ Какой результат будет, если передать пустой интерфейс в reflect.TypeOf()?
👻 — Это приведёт к ошибке компиляции.
🌚 — Вернёт тип interface{}.
⚡️ — Вернёт nil.
🎉 — Вернёт тип void.
🐸Библиотека задач по Go
👻 — Это приведёт к ошибке компиляции.
🌚 — Вернёт тип interface{}.
⚡️ — Вернёт nil.
🎉 — Вернёт тип void.
🐸Библиотека задач по Go
Какой подход к планированию горутин используется в Go?
👻 — M:1 (Много горутин на один поток)
🌚 — M:N (Много горутин на много потоков)
⚡️ — 1:1 (Один поток на одну горутину)
🎉 — N:100 (Много потоков на сто горутин)
🐸Библиотека задач по Go
👻 — M:1 (Много горутин на один поток)
🌚 — M:N (Много горутин на много потоков)
⚡️ — 1:1 (Один поток на одну горутину)
🎉 — N:100 (Много потоков на сто горутин)
🐸Библиотека задач по Go
❓ Что означает runtime.GOMAXPROCS(4)
👻 — Это предел на количество горутин, которые могут выполняться одновременно.
🌚 — Это конфигурация для распределения горутин по всем доступным процессорам.
⚡️ — Это параметр, который ограничивает количество потоков в программе.
🎉 — Это настройка, определяющая, сколько ядер процессора может использовать Go.
🐸Библиотека задач по Go
👻 — Это предел на количество горутин, которые могут выполняться одновременно.
🌚 — Это конфигурация для распределения горутин по всем доступным процессорам.
⚡️ — Это параметр, который ограничивает количество потоков в программе.
🎉 — Это настройка, определяющая, сколько ядер процессора может использовать Go.
🐸Библиотека задач по Go
❓ Что случится, если функция, переданная в sync.Once.Do, вызовет панику (при условии, что мы сможем восстановиться после ошибки)?
👻 — Программа завершится с ошибкой, и функция не будет вызвана повторно.
🌚 — Паника будет проигнорирована, и функция продолжит выполнение.
⚡️ — Все последующие вызовы функции завершатся ошибкой.
🎉 — Паника рассматривается как завершение функции, и будущие вызовы не вызовут её снова.
🐸Библиотека задач по Go
👻 — Программа завершится с ошибкой, и функция не будет вызвана повторно.
🌚 — Паника будет проигнорирована, и функция продолжит выполнение.
⚡️ — Все последующие вызовы функции завершатся ошибкой.
🎉 — Паника рассматривается как завершение функции, и будущие вызовы не вызовут её снова.
🐸Библиотека задач по Go
❓ Что случится, если вы примените оператор goto для перехода из одной функции в другую?
👻 — Это вызовет ошибку компиляции, так как оператор goto работает только в пределах одной функции.
🌚 — Это возможно, но только если функции находятся в одном пакете.
⚡️ — Это ведет к переполнению стека, поскольку переход между функциями является дорогостоящим.
🎉 — Оператор goto позволяет переходить между функциями, но лучше использовать обычные вызовы функций.
🐸Библиотека задач по Go
👻 — Это вызовет ошибку компиляции, так как оператор goto работает только в пределах одной функции.
🌚 — Это возможно, но только если функции находятся в одном пакете.
⚡️ — Это ведет к переполнению стека, поскольку переход между функциями является дорогостоящим.
🎉 — Оператор goto позволяет переходить между функциями, но лучше использовать обычные вызовы функций.
🐸Библиотека задач по Go