Maison >développement back-end >Golang >Comment créer efficacement des copies complètes de cartes dans Go ?
Faire des copies de cartes dans Go : existe-t-il une fonction intégrée ?
Les cartes dans Go sont une structure de données polyvalente, mais le l'absence de fonction intégrée pour créer des copies peut être un obstacle. Heureusement, plusieurs approches peuvent vous aider à y parvenir.
Utilisation du package encoding/gob
Pour une solution générale, le package encoding/gob fournit un moyen robuste de créer des copies complètes de structures de données complexes, y compris des cartes. En codant la carte originale puis en la décodant dans une nouvelle variable, vous créez une copie qui fait référence à un emplacement mémoire différent.
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 }
En utilisant encoding/gob, vous pouvez créer des copies profondes qui respectent même les structures imbriquées. , comme des tranches de cartes ou des cartes contenant des tranches.
Autres considérations
Pendant que encoding/gob offre une solution générale, elle peut ne pas convenir à tous les cas. Si vos cartes sont relativement simples, vous pouvez envisager d'écrire une fonction personnalisée pour créer des copies superficielles. De plus, il existe des bibliothèques tierces qui offrent une fonctionnalité de copie de cartes.
N'oubliez pas que les copies dans Go sont toujours profondes, ce qui signifie qu'elles créent de nouvelles instances des données, contrairement aux copies superficielles, qui créent uniquement des références à l'original. Il s'agit d'une distinction importante à prendre en compte lors de la manipulation de cartes.
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!