Блог Golang | OTUS
Посты
Каналы каналов в Go

GoPro_Headline_970x70-1801-dc9277.png

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

Переназначение в Go

В языке программирования Golang существуют такие понятия, как повторная декларация и переназначение. Рассмотрим их подробнее.

Форма краткой декларации := работает так:

1-20219-b81efa.png

Ниже -- объявление, вызываемое os.Open:

Аллокация с помощью make в Go

GoPro_Headline_970x70-1801-dc9277.png

В языке программирования Go существует встроенная функция make(T, args). По своему назначению она отличается от функции new(T) и создает лишь срезы, каналы и карты, возвращая инициализированное значение типа T(не *T).

Оператор defer в языке Go

GoPro_Headline_970x70-1801-dc9277.png

Оператор defer служит для планирования вызова функции, то есть речь идет, по сути, об отложенной функции. Это довольно необычный, но эффективный способ справиться с ситуациями, когда ресурсы важно освободить вне зависимости от того, какой именно путь принимает функция для возврата. Традиционный пример -- разблокировка мьютекса либо закрытие файла.

Экспортируем интерфейс вместо типа в Go

GoPro_Headline_970x70-1801-dc9277.png

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

Форматирование в Go

GoPro_Headline_970x70-1801-dc9277.png

Как известно, в программировании вопросы форматирования иногда вызывают ожесточенные споры, хотя, по сути, эти вопросы не являются самыми значимыми. Да и в целом, люди способны адаптироваться к разным стилям форматирования, однако все же лучше, если делать это им не нужно. Еще лучше, если разработчики тратят на это как можно меньше времени, а все придерживаются одинакового стиля. Но как обстоит дело с форматированием в Go?

Распараллеливание вычислений в Go

GoPro_Headline_970x70-1801-dc9277.png

Когда есть возможность разбить вычисление на отдельные части, которые можно выполнить независимо, тогда вычисление в Go можно распараллелить. При этом потребуется использовать каналы для сигнализирования о том, что та или иная часть вычисления завершается.

Популярное
Сегодня тут пусто