Vi un código en este enlace y me confundí: http://www.darkcoding.net/software/go-lang-after-four-months/¿El canal de Go devuelve dos valores?
¿Cuál es el significado del segundo valor (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
}
}
}
Me parece que es una construcción demasiado pesada. Con select, creo que no hay necesidad de buscar el booleano ok. O me estoy perdiendo algo ? –
Son ortogonales. "ok" en la operación de recepción de canal indica si el canal está cerrado. Select simplemente espera hasta que se ejecute al menos uno de sus casos, y luego elige uno al azar sin importar si el canal está cerrado. Un caso predeterminado lo hace no bloqueante. – SteveMcQwark