Ho visto del codice in questo collegamento e mi sono confuso: http://www.darkcoding.net/software/go-lang-after-four-months/Il canale di un Go restituisce due valori?
Qual è il significato del secondo valore (ok)?
for self.isRunning {
select {
case serverData, ok = <-fromServer: // What's the meaning of the second value(ok)?
if ok {
self.onServer(serverData)
} else {
self.isRunning = false
}
case userInput, ok = <-fromUser:
if ok {
self.onUser(userInput)
} else {
self.isRunning = false
}
}
}
Mi sembra un costrutto troppo pesante. Con select, penso che non ci sia bisogno di recuperare l'ok booleano. O mi sta sfuggendo qualcosa ? –
Sono ortogonali. "ok" nell'operazione di ricezione del canale indica se il canale è chiuso. Selezionare aspetta solo fino a quando almeno uno dei suoi casi può essere eseguito, quindi ne sceglie uno a caso indipendentemente dal fatto che il canale sia chiuso. Un caso predefinito lo rende non bloccante. – SteveMcQwark