Ein kurzer Beitrag, dessen Hauptwert die Kommentare sein werden (hoffe ich).
Ich bin vor kurzem zu Go gewechselt. Bisher habe ich drei Probleme festgestellt:
time.Tickerhört nicht auf: übersprungene Zeiledefer tick.Stop()Der Kommentar zum Bibliothekstyp besagt, dass er "gleichzeitig sicher" ist, sagt jedoch nicht genau, wie Methoden aufgerufen werden können oder von welchen Goroutinen. Die Standardeinstellung kann als "jede Methode eines Typs kann von überall in einer beliebigen Sequenz aufgerufen werden" betrachtet werden. In der Praxis ist dies jedoch bei den meisten thread-sicheren Typen nicht der Fall: Sie haben entweder einen bestimmten Lebenszyklus (Start-Stopp) oder die Semantik unterstützt nur einen Writer: Mutating Methoden können nur von einer Goroutine oder von beiden aufgerufen werden.
Der Punkt ist verwandt und überschneidet sich teilweise mit dem vorherigen: Es gibt ein Feld in der Struktur
sync.Mutex, aber es gibt keinen Kommentar, der erklärt, was es schützt und vor allem warum (zum Beispiel "Der Zugriff auf diese Felder sollte geschützt werden, weil sie von so und so einer Goroutine geschrieben und von Goroutinen gelesen werdennet/httpServer ").
Beachten Sie, dass selbst in der Golang / Go-Quelle, die normalerweise nicht kommentiert wird (mit Ausnahme der dokumentarischen), alle Mutexe in Unterpaketennet/kurze Kommentare enthalten.
Eine Frage für Leute, die schon länger in Go geschrieben haben - welche Probleme stellen Sie regelmäßig bei Überprüfungen fest, wenn Sie sich mit dem alten Code oder dem Code von Bibliotheken befassen?
Dieser Beitrag ist eine Cross- Post- Übersetzung aus einem Beitrag auf Reddit .