smrcptr
v1.4.1
No mezcle los tipos de receptor. Elija punteros o tipos de estructura para todos los métodos disponibles.
GO tiene reglas sobre cómo selecciona automáticamente receptores de valor o método, lo cual es complejo y puede conducir a errores. Por lo tanto, es una recomendación de estilo común 1 2 .
go install github.com/nikolaydubina/smrcptr@latest type Pancake struct {}
func NewPancake () Pancake { return Pancake {} }
func ( s * Pancake ) Fry () {}
func ( s Pancake ) Bake () {}$ smrcptr ./...
/pancake.go:12:1: Pancake.Fry uses pointer
/pancake.go:10:1: Pancake.NewPancake uses value
/pancake.go:14:1: Pancake.Bake uses value A partir de 2022-11-30 , no detecta que los receptores de método de puntero y valor se mezclan. El analizador más relevante ST1016 verifica solo el nombre del receptor del método.
$ staticcheck -checks ST1016 ./...
main.go:9:18: methods on the same type should have the same receiver name (seen 1x " v " , 2x " s " ) (ST1016)El uso de todos los analizadores tampoco lo detecta.
staticcheck -checks all ./...
main.go:9:18: methods on the same type should have the same receiver name (seen 1x " v " , 2x " s " ) (ST1016)Vaya wiki https://github.com/golang/go/wiki/codereviewcomments#receiver-type ↩
Guía de estilo Google Go https://google.github.io/styleguide/go/decisions#receiver-type ↩