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)