Очереди, как правило, всегда близки к заполнению или почти пусты из-за разницы в темпах работы потребителей и производителей. Они очень редко работают в сбалансированном среднем положении, когда темпы производства и потребления совпадают. Поэтому редко можно найти размер канала, который будет стабильно точным, то есть точное значение которого не приведет к слишком большому количеству конфликтов или напрасному выделению памяти.
Пустая структура — стандарт де-факто для обозначения отсутствия смысла. Например, если нужна структура в виде хеш-множества (коллекция уникальных элементов), то следует использовать в качестве значения пустую структуру map[K]struct{}.
Мы видели, что нарезка может вызвать утечку из-за тонкостей, связанных с емкостью среза. А что насчет элементов, которые все еще являются частью резервного массива, но находятся за пределами диапазона, определяемого длиной? Собирает ли их сборщик мусора?
Почему наличие двух строк, относящихся к одной ошибке, — проблема? Это усложняет отладку. Например, если рассматриваемая функция вызывается несколько раз в режиме конкурентного выполнения, эти два сообщения могут не следовать в журналах одно за другим, что усложнит процесс отладки.