In Golang, wie um zu testen, ob ein Kanal ist in der Nähe und nur zu senden, um Sie, wenn es nicht geschlossen?

In Golang, wenn ein Kanal channel ist geschlossen, ich kann immer noch Lesen, es mithilfe der folgenden syntax ein, und ich kann testen ok zu sehen, wenn es geschlossen ist.

value, ok := <- channel
if !ok {
    //channel was closed and drained
}

Jedoch, wenn ich nicht weiß, ob ein Kanal ist geschlossen und blind schreiben zu können, kann ich bekam eine Fehlermeldung. Ich möchte wissen, ob es irgendeinen Weg gibt, dass ich testen können der Kanal und nur schreiben, wenn es nicht geschlossen ist. Ich Stelle diese Frage, weil ich weiß manchmal nicht, wenn ein Kanal geschlossen ist oder nicht in einer goroutine.

  • wenn Sie nicht wissen, ob ein Kanal geschlossen ist oder nicht und blind schreiben zu können, dann haben Sie ein schlecht konzipiertes Programm. Redesign ist es so, dass es keine Möglichkeit gibt, zu schreiben, in es nach ist es geschlossen.
  • Ja @ain, ich Stimme völlig mit Ihnen! Ich will einfach nur wissen, technisch, ob es eine Möglichkeit gibt, das zu tun.
  • Verwandte / mögliche Duplikate von: Schließen-Kanal unbekannter Länge
InformationsquelleAutor Ogrish Man | 2016-08-29
Schreibe einen Kommentar