Sobes.tech
Назад к вопросам
Middle+
3

Что такое канал в Go? Для чего используются каналы?

Компании, где спрашивали
А7

Ответ от нейросети

sobes.tech AI

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

Каналы объявляются с указанием типа передаваемых данных, например:

ch := make(chan int) // канал для передачи целых чисел

Основные операции с каналами:

  • Отправка значения: ch <- value
  • Получение значения: value := <-ch

Каналы используются для:

  • Синхронизации горутин
  • Передачи данных между горутинами
  • Организации конвейеров обработки данных

Пример:

package main

import (
	"fmt"
	"time"
)

func worker(ch chan int) {
	for val := range ch {
		fmt.Println("Получено:", val)
	}
}

func main() {
	ch := make(chan int)
	go worker(ch)

	for i := 0; i < 5; i++ {
		ch <- i
	}
	close(ch) // закрываем канал, чтобы worker завершился
	time.Sleep(time.Second)
}

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