Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
635 - Telegram Web
Telegram Web
Что делает _ — импорт?

В Go _-импорт используется для подключения пакета только ради выполнения его побочных эффектов (например, функций init()) без дальнейшего использования самого пакета в коде.

Таким образом, компилятор не будет требовать обращения к пакетным функциям или переменным, но все действия в init() будут выполнены. Этот подход часто используется для регистрации драйверов, плагинов или настройки глобальных зависимостей.
👍131
Что будет, если использовать пакет из _ импорта?

Если попытаться использовать функции, переменные или типы из пакета, который импортирован с помощью _, это вызовет ошибку компиляции.
Пустой идентификатор (_) означает, что пакет подключён исключительно для выполнения побочных эффектов (например, init()). Сам пакет становится «неактивным» для остального кода программы.
👍2
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что выведет следующий код и почему?
package main

import "fmt"

func main() {
i := 0
defer fmt.Println("Result:", i)
i++
}

Выведется 0, потому что defer захватывает значение переменных на момент объявления, а не на момент выполнения отложенной функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍4
🦫 Самоучитель по Go для начинающих. Часть 18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http

Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.

📎 Читать новую часть самоучителя
👍4
Как вы будете ждать завершения нескольких горутин, чтобы продолжить выполнение основного потока?

Для ожидания завершения нескольких горутин и продолжения выполнения основного потока в Go можно использовать sync.WaitGroup. Этот инструмент позволяет координировать выполнение горутин и гарантировать, что основной поток дождётся завершения всех задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Как работает sync.WaitGroup?

1️⃣ Создаётся экземпляр sync.WaitGroup, который отслеживает количество горутин.
2️⃣ Перед запуском горутин вызывается метод Add(n), где n — количество горутин, которые нужно отследить.
3️⃣ Внутри каждой горутины вызывается метод Done(), который уменьшает счётчик WaitGroup на 1 после завершения работы.
4️⃣ Основной поток вызывает метод Wait(), который блокируется до тех пор, пока счётчик не станет равным нулю.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏9🥱2
Чем отличаются crypto/rand и math/rand? Когда использовать каждый из них?

Цель и применение:
crypto/rand: Предназначен для генерации криптографически стойких случайных чисел. Используется в задачах, связанных с безопасностью, где важно исключить возможность предсказания результата.
math/rand: Предоставляет генератор псевдослучайных чисел, который быстрее, но менее стойкий к предсказанию. Используется в сценариях, где безопасность не критична, например, для симуляций, тестов или игровых алгоритмов.

Генератор случайных чисел:
⚙️ crypto/rand: Использует системный источник случайности (например, /dev/urandom в Linux или CryptGenRandom в Windows). Это делает его надежным, но медленным.
⚙️ math/rand: Использует алгоритм генерации псевдослучайных чисел, который основывается на фиксированном начальном значении (seed). Повторение одинакового сида приводит к генерации одинаковой последовательности чисел.

Предсказуемость:
⚙️ crypto/rand: Случайные числа практически невозможно предсказать.
⚙️ math/rand: Если известен seed, последовательность чисел легко воспроизвести.
👍9🔥1
Как работать с временно неиспользуемыми переменными?

Если переменная временно не используется, её можно явно игнорировать с помощью _ (пустого идентификатора). Это указывает на то, что разработчик осознанно отказывается от значения.
👍3
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!

🔹 Почему IT?

- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.

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

📚 Как это работает?

- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.

А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше

Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:

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

🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.

🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.

🔵 И другие комбинации для разных целей.

Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас

Развивайтесь в IT — и будущее уже будет в ваших руках!
👍1
Что делает функция io.TeeReader? Приведите примеры использования

Функция io.TeeReader из пакета io создаёт Reader, который выполняет двойную работу:
1️⃣ Читает данные из исходного io.Reader.
2️⃣ Одновременно записывает эти данные в заданный io.Writer.

Иными словами, она «разветвляет» поток данных: каждый байт, который читается, также записывается в другой поток, указанный через io.Writer.

Где может быть полезен io.TeeReader?

Логирование данных:
Когда нужно сохранять или анализировать данные, одновременно читая их.
Например, записывать HTTP-запросы или ответы в лог, не прерывая основной процесс обработки.

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

Создание копий данных:
Например, при загрузке файла вы можете сохранить копию на диск и одновременно передать её в сетевой поток.

Диагностика и отладка:
Можно использовать TeeReader для перехвата и анализа данных в реальном времени.
👍11
Почему в Go функции всегда возвращают error, даже если оно равно nil?

В Go функции всегда возвращают error, чтобы обеспечить явную обработку ошибок. Даже если error == nil, его наличие заставляет разработчика проверить результат выполнения. Это делает код предсказуемым, читабельным и снижает вероятность игнорирования ошибок, сохраняя простоту интерфейса и гибкость дизайна функций.
👍11🥱6🌚1
🤨 Как сравнить два слайса в Go?
В Go для сравнения двух слайсов нужно вручную или с помощью готовых решений проверить их содержимое, так как оператор == не поддерживает сравнение слайсов

1️⃣ Через циклы
func slicesEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}


2️⃣ Библиотека reflect
import "reflect"

func slicesEqual(a, b []int) bool {
return reflect.DeepEqual(a, b)
}


3️⃣Использование cmp из google/go-cmp
Для более сложных сравнений, например, со структурой или кастомными правилами:
import (
"fmt"
"github.com/google/go-cmp/cmp"
)

func main() {
slice1 := []int{1, 2, 3}
slice2 := []int{1, 2, 3}

fmt.Println(cmp.Equal(slice1, slice2)) // true
}


4️⃣Сравнение через сериализацию (для сложных данных)
import (
"encoding/json"
"log"
)

func slicesEqualJSON(a, b []int) bool {
aJSON, _ := json.Marshal(a)
bJSON, _ := json.Marshal(b)
return string(aJSON) == string(bJSON)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🙏2
Что такое iota и как он работает в Go?

iota — это встроенный идентификатор, используемый для генерации последовательных числовых значений внутри блока const. Он начинается с 0 и увеличивается на 1 с каждой строкой
👍6
Как работает iota в случае переопределения значений

const (
A = iota // 0
B = «Hello» // Переопределение строки
C = iota // 2 (счёт продолжается)
D = 100 // Явное значение
E = iota // 4
)

Когда в блоке const происходит явное переопределение значений, поведение iota остаётся последовательным, но его значение продолжает увеличиваться на каждой строке, независимо от того, используется ли iota явно или задаются другие значения вручную.
👍131😢1
Что такое «магическая дата» в Go?

«Магическая дата» в Go — это фиксированная дата и время: 2006-01-02 15:04:05, выбранная для демонстрации форматов даты и времени. Она служит эталоном для указания шаблонов при работе с функциями форматирования и парсинга времени.

Почему выбрана именно эта дата?
Go использует числовую комбинацию, отражающую порядок элементов даты и времени:
2006 — год, состоящий из 4 цифр.
01 — месяц.
02 — день.
15 — часы в 24-часовом формате.
04 — минуты.
05 — секунды.

Из этой даты получается набор цифр — 1,2,3,4,5,6
🤔11👍6
Может ли одна горутина заблокировать мьютекс, а другая его разблокировать?

Мьютексы в Go не отслеживают, какая конкретно горутина вызвала Lock или Unlock. Это означает, что мьютекс может быть заблокирован одной горутиной и разблокирован другой. Такое поведение допускается на уровне реализации, чтобы мьютексы были максимально простыми и эффективными.
Однако это крайне не рекомендуется, так как приводит к сложностям в управлении состоянием мьютекса и повышает риск возникновения ошибок.
👍24
В каких случаях деление на ноль в языке Go не приводит к панике (panic), и какой результат возвращается в этих случаях?

Деление на ноль в Go не приводит к панике в случаях, когда используются числа с плавающей запятой (float64). В зависимости от знака делимого, результат будет:
Положительное число делится на ноль: результатом будет положительная бесконечность (+Inf).
Отрицательное число делится на ноль: результатом будет отрицательная бесконечность (-Inf).
Ноль делится на ноль: результатом будет «not-a-number» (NaN).
👍21❤‍🔥1
🎨 Новый канал для вдохновения — UX in GIF

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

📌 Чем полезен канал?

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

👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
🗺 Привычка "срезать углы" при ходьбе – это интуитивное применение алгоритмов?

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

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

🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/014fe6d8
2025/07/09 18:57:25
Back to Top
HTML Embed Code: