RSS Julia Evans
Suivre
Les structures Go sont copiées lors de l'attribution (et d'autres choses sur Go que j'avais manquées)
L'auteur, un programmeur Go occasionnel, a rencontré un bug qui a révélé une méconception fondamentale de la manière dont les structs sont copiés pendant l'attribution en Go. Cette méconception provenait du fait que les structs sont copiés à l'attribution, et non référencés, ce qui a conduit à un comportement inattendu lors de la modification d'un struct après l'avoir attribué à une autre variable. L'auteur a été surpris par ce comportement, car son expérience avec d'autres langages l'avait amené à croire que les variables étaient généralement passées par référence. Cette erreur de conception a été encore compliquée par la compréhension de l'auteur sur le passage par valeur et le passage par référence dans les arguments de fonction, qu'il n'avait pas étendu aux attributions de variables. L'auteur a également découvert que les sous-tranches dans Go partagent le même tableau de base que la tranche originale, ce qui signifie que l'ajout à une sous-tranche peut modifier involontairement la tranche originale. En outre, l'auteur a acquis une clarté sur la différence entre les récepteurs de valeur et les récepteurs de pointeur dans les méthodes Go, comprenant que les récepteurs de pointeur sont nécessaires lorsque une méthode doit modifier le struct sur lequel elle est appelée. L'auteur a également loué la ressource "100 Go Mistakes" pour son format clair et concis, qui lui a permis d'identifier et d'apprendre rapidement des pièges courants en Go. Enfin, l'auteur a énuméré d'autres ressources Go précieuses, y compris "Go by Example", "go.dev/play" et des outils d'analyse statique comme "staticcheck" et "golangci-lint."