Sobes.tech
Junior

Jakie operacje można wykonywać na kanałach w Go?

sobes.tech AI

Odpowiedź od AI

  • Wysyłanie (<-chan)
  • Odbieranie (chan<-)
  • Zamknięcie (close)
  • Sprawdzanie zamknięcia (druga wartość zwracana podczas odbioru)
  • Użycie w select
  • Definiowanie buforowania (za pomocą cap)
  • Definiowanie aktualnej liczby elementów (za pomocą len)

Przykład:

// Tworzenie buforowanego kanału
ch := make(chan int, 5)

// Wysyłanie wartości
ch <- 10

// Odbieranie wartości
val := <-ch

// Sprawdzanie, czy kanał jest zamknięty podczas odbioru
val, ok := <-ch

// Zamknięcie kanału
close(ch)

// Użycie w select
select {
case msg1 := <-ch1:
	// obsługa wiadomości z ch1
case msg2 := <-ch2:
	// obsługa wiadomości z ch2
default:
	// brak dostępnych wiadomości
}

// Definiowanie rozmiaru bufora
bufferSize := cap(ch)

// Definiowanie aktualnej liczby elementów
currentElements := len(ch)