Maison >développement back-end >Golang >Comment créer des copies complètes de cartes dans Go ?

Comment créer des copies complètes de cartes dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 02:01:14211parcourir

How to Create Deep Copies of Maps in Go?

Création de copies complètes de cartes dans Go

Bien que vous puissiez créer manuellement une copie d'une carte, il peut être plus pratique d'utiliser des -dans des fonctions ou des bibliothèques.

Intégré Fonctions

Malheureusement, il n'existe pas de fonction intégrée spécifiquement pour faire des copies de cartes arbitraires dans Go.

Bibliothèques et packages

  • encoding/gob : Cette bibliothèque vous permet d'encoder et de décoder des structures de données arbitraires, y compris des cartes. En codant la carte originale et en la décodant dans une nouvelle variable, vous pouvez créer une copie complète.
import (
    "bytes"
    "encoding/gob"
    "fmt"
)

func main() {
    ori := map[string]int{
        "key":  3,
        "clef": 5,
    }

    // Encode the original map
    var mod bytes.Buffer
    enc := gob.NewEncoder(&mod)
    err := enc.Encode(ori)
    if err != nil {
        fmt.Println("Failed to encode map:", err)
        return
    }

    // Decode the encoded map into a new variable (deep copy)
    var cpy map[string]int
    dec := gob.NewDecoder(&mod)
    err = dec.Decode(&cpy)
    if err != nil {
        fmt.Println("Failed to decode map:", err)
        return
    }

    // Modify the copied map to demonstrate they are independent
    cpy["key"] = 2
    fmt.Println("Original map:", ori)
    fmt.Println("Copied map:", cpy)
}

En utilisant l'une de ces approches, vous pouvez facilement créer des copies complètes de cartes dans Go.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn