Widziałem niektóre kodu w ten link i irytować: http://www.darkcoding.net/software/go-lang-after-four-months/Czy kanał Go zwraca dwie wartości?
Co to ma znaczyć drugiej wartości (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
}
}
}
Wydaje mi się, że to zbyt ciężka konstrukcja. Z select, myślę, że nie ma potrzeby pobierania ok boolean. Czy może czegoś brakuje? –
Są ortogonalne. "ok" w operacji odbierania kanału wskazuje, czy kanał jest zamknięty. Wybierz tylko czeka, aż przynajmniej jeden z jego przypadków będzie mógł zostać uruchomiony, a następnie zostanie wybrany losowo, bez względu na to, czy kanał jest zamknięty. Domyślny przypadek powoduje, że nie jest blokowany. – SteveMcQwark