IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

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

продолжить чтение


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

продолжить чтение


Пакет envconfig в Go предназначен для удобной загрузки переменных окружения в структуры. Это популярный инструмент, который позволяет легко маппить переменные окружения на заранее определённые поля структуры и упрощает управление конфигурацией приложения....

продолжить чтение


Зелёные потоки — это потоки, которые управляются не операционной системой (ОС), а пользовательской библиотекой или рантаймом (в случае Go это рантайм Go). Они позволяют управлять параллельностью на уровне программы, без участия планировщика ОС, что делает их гораздо легче и менее ресурсоёмкими по сравнению с системными потоками....

продолжить чтение


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

продолжить чтение


RCU (Read–Copy–Update) — это техника синхронизации, разработанная для повышения производительности многопоточных программ, особенно в условиях, когда множество потоков активно читают данные, а операции записи происходят редко. В отличие от традиционных методов синхронизации, таких как мьютексы, которые блокируют доступ к данным, RCU позволяет потокам выполнять чтение параллельно, минимизируя блокировки и задержки....

продолжить чтение


Чтобы обратить (реверсировать) односвязный список в Go, нужно поменять местами ссылки next между узлами, чтобы они указывали на предыдущий элемент, а не на следующий. При этом голова списка (head) после обращения будет указывать на последний элемент исходного списка....

продолжить чтение


В Go для работы с ассоциативными массивами (или словарями) и их маршалинга в формат YAML используется пакет gopkg.in/yaml.v2. Этот пакет позволяет преобразовывать структуры данных Go в формат YAML и обратно....

продолжить чтение


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

продолжить чтение


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

продолжить чтение


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

продолжить чтение


Да, в Go, а также в среде разработки GoLand, дефис в именах бинарных файлов запрещён, и это связано с правилами именования в самой операционной системе и компиляторе Go. Дефис (-) воспринимается как опция командной строки, и поэтому его нельзя использовать в имени исполняемых файлов....

продолжить чтение


В Go каналы (channels) по своей сути являются ссылочными типами, даже если они передаются в функцию "по значению". Это означает, что при передаче канала в функцию вы фактически передаёте указатель на сам канал, а не копию канала....

продолжить чтение