Go

Channels

Channels, buffered vs unbuffered, close, select, range sui channels, nil channels

22 domande da colloquio·
Junior
1

Cos'è un channel in Go?

Risposta

Un channel è un tipo di dato che consente la comunicazione e la sincronizzazione tra goroutine. Funziona come un condotto tipizzato che permette di inviare e ricevere valori in modo thread-safe. Usa i channel per condividere dati tra goroutine invece di condividere la memoria direttamente.

2

Come creare un unbuffered channel di interi in Go?

Risposta

Un unbuffered channel si crea con make(chan T) senza specificare la capacità. Blocca il mittente finché un ricevitore non è pronto, garantendo una sincronizzazione rigorosa. Usa gli unbuffered channel per comunicazioni one-to-one che richiedono una sincronizzazione esplicita.

3

Qual è la differenza principale tra un buffered e un unbuffered channel?

Risposta

Un unbuffered channel blocca il mittente finché un ricevitore non è pronto (sincronizzazione rigorosa), mentre un buffered channel può memorizzare valori fino alla sua capacità prima di bloccare. I buffered channel disaccoppiano le goroutine e migliorano le prestazioni in alcuni casi, ma possono nascondere problemi di concorrenza. Usa unbuffered per la sincronizzazione, buffered per il throughput.

4

Come creare un buffered channel con una capacità di 10 elementi?

5

Come inviare un valore in un channel?

+19 domande da colloquio

Padroneggia Go per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis