Maison > développement back-end > Golang > Comment puis-je copier en profondeur des cartes dans Go ?

Comment puis-je copier en profondeur des cartes dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-26 16:15:11
original
1007 Les gens l'ont consulté

How Can I Deep Copy Maps in Go?

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal