Sobes.tech
Junior

Какви операции могат да се изпълняват с канали в Go?

sobes.tech AI

Отговор от AI

  • Изпращане (<-chan)
  • Получаване (chan<-)
  • Затваряне (close)
  • Проверка за затваряне (второто връщано значение при получаване)
  • Използване в select
  • Определяне на буфера (чрез cap)
  • Определяне на текущия брой елементи (чрез len)

Пример:

// Създаване на буфериран канал
ch := make(chan int, 5)

// Изпращане на стойност
ch <- 10

// Получаване на стойност
val := <-ch

// Проверка за затваряне при получаване
val, ok := <-ch

// Затваряне на канала
close(ch)

// Използване в select
select {
case msg1 := <-ch1:
	// обработка на съобщения от ch1
case msg2 := <-ch2:
	// обработка на съобщения от ch2
default:
	// няма налични съобщения
}

// Определяне на буфера
bufferSize := cap(ch)

// Определяне на текущия брой елементи
currentElements := len(ch)