Copie approfondie de cartes dans Go
Question : Existe-t-il une fonction ou une bibliothèque intégrée dans Go pour créer des copies complètes de cartes arbitraires ?
Réponse : Bien que Go n'offre pas de fonction intégrée dédiée à la copie de cartes, le package encoding/gob peut être utilisé pour cet objectif.
Approche d'encodage et de décodage
Encoding/gob fournit deux fonctions : Encoder et Decode, qui peuvent être exploitées pour obtenir une copie complète d'une carte. La fonction Encode encode la carte dans un tampon, tandis que la fonction Decode reconstruit la carte à partir du tampon.
Exemple :
package main import ( "bytes" "encoding/gob" "fmt" "log" ) func main() { ori := map[string]int{ "key": 3, "clef": 5, } var mod bytes.Buffer enc := gob.NewEncoder(&mod) dec := gob.NewDecoder(&mod) fmt.Println("ori:", ori) // key:3 clef:5 err := enc.Encode(ori) if err != nil { log.Fatal("encode error:", err) } var cpy map[string]int err = dec.Decode(&cpy) if err != nil { log.Fatal("decode error:", err) } fmt.Println("cpy:", cpy) // key:3 clef:5 cpy["key"] = 2 fmt.Println("cpy:", cpy) // key:2 clef:5 fmt.Println("ori:", ori) // key:3 clef:5 }
Dans cet exemple, nous encodons la carte originale, ori, dans un mod tampon. Nous décodons ensuite le tampon dans une nouvelle carte, cpy. La carte de copie et la carte d'origine sont désormais indépendantes et toute modification apportée à l'une n'affectera pas l'autre.
Avantages de l'encodage/Gob
Utilisation des offres d'encodage/gob avantages lorsque vous travaillez avec des structures de données complexes, y compris des tranches de structures contenant une tranche de cartes. Il fournit un moyen simple d'effectuer une copie approfondie sans avoir besoin d'une implémentation manuelle.
Ressources supplémentaires
Pour en savoir plus sur l'encodage/gob, reportez-vous au blog officiel de Go. message :
[https://blog.golang.org/gobs](https://blog.golang.org/gobs)
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!