Буферизированная или небуферизированная горутина быстрее передает значение

«Буферизированная или небуферизированная горутина быстрее передает значение» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Буферизированные каналы быстрее, так как отправитель не блокируется до получения значения получателем. В буферизированном канале отправитель может записать несколько значений без ожидания, пока получатель их прочитает.

Пример:

// Буферизированный (быстрее)
buffered := make(chan int, 1)
buffered <- 42 // Не блокируется

// Небуферизированный (медленнее)
unbuffered := make(chan int)
go func() { unbuffered <- 42 }() // Блокируется до чтения

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