Un post breve, cuyo valor principal serán los comentarios (espero).
Cambié a Go recientemente. Hasta ahora he notado tres problemas:
time.Ticker
no se detiene: línea saltadadefer tick.Stop()
El comentario sobre el tipo de biblioteca dice que es "simultáneamente seguro", pero no dice exactamente cómo se pueden llamar a los métodos o desde qué rutinas. El valor predeterminado puede considerarse "se puede llamar a cualquier método de un tipo desde cualquier lugar en cualquier secuencia", pero en la práctica este no es el caso para la mayoría de los tipos seguros para subprocesos: tienen algún ciclo de vida (inicio-parada), o la semántica solo admite un escritor: mutante los métodos se pueden llamar desde una sola goroutine, o desde ambas.
El punto está relacionado y en parte se superpone con el anterior: hay un campo en la estructura
sync.Mutex
, pero no hay ningún comentario que explique qué protege y, lo más importante, por qué (por ejemplo, "el acceso a estos campos debe estar protegido, porque están escritos a partir de tal o cual goroutine y leídos desde goroutinesnet/http
servidor ").
Tenga en cuenta que incluso en la fuente golang / go, que generalmente no se comenta (aparte de los documentales), todos los mutex en los subpaquetesnet/
tienen comentarios cortos.
Una pregunta para las personas que han estado escribiendo en Go más tiempo: ¿qué problemas observa regularmente durante las revisiones, al profundizar en el código antiguo o en el código de las bibliotecas?
Esta publicación es una traducción cruzada de una publicación en Reddit .