Salut la communauté Dev.to ! ?
Si vous avez déjà travaillé avec des boucles de plage dans Golang, vous avez peut-être rencontré des bugs subtils mais frustrants. Ceux-ci proviennent souvent de la façon dont les éléments sont référencés dans la boucle. En tant que développeurs Go, comprendre ce comportement est crucial pour écrire du code propre et sans bug.
Dans mon dernier article, je plonge dans :
Voici un aperçu d'un problème courant :
func getAvatarUrl(characterId int) string{ // Simulate getting URL return fmt.Sprintf("https://base-url/%d", characterId) } type CharacterInfo struct { id int characterName string avatarUrl string } charactersOfGOT := []CharacterInfo{ {id: 1, characterName: "Jon Snow"}, {id: 2, characterName: "Daenerys Targaryen"}, {id: 3, characterName: "Arya Stark"}, {id: 4, characterName: "Tyrion Lannister"}, } for _, charInfo := range charactersOfGOT { charInfo.avatarUrl = getAvatarUrl(charInfo.id) } for _, charInfo := range charactersOfGOT { fmt.Printf("Id: %d Name: %s, avatar: %s\n", charInfo.id, charInfo.characterName, charInfo.avatarUrl) }
Pourquoi cela ne donne-t-il pas ce que vous attendez ? ? Si vous avez été confronté à un défi similaire, cet article vous aidera à comprendre pourquoi !
? Lisez l'article complet ici pour savoir comment éviter ces pièges et devenir un pro du maniement des range loops en Go.
J'aimerais connaître vos réflexions et vos expériences avec les boucles de gamme Go. Avez-vous été confronté à des comportements bizarres ou avez-vous des conseils à partager ? Discutons-en dans les commentaires ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!