Maison  >  Article  >  développement back-end  >  Comment ajouter des valeurs aux tableaux d'une carte dans Go tout en préservant les références d'objet ?

Comment ajouter des valeurs aux tableaux d'une carte dans Go tout en préservant les références d'objet ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 21:28:29902parcourir

How do you append values to arrays within a map in Go while preserving object references?

Ajout de valeurs à un tableau dans une carte dans Go

Lorsque vous essayez d'ajouter des valeurs à des tableaux dans une carte, vous pouvez rencontrer des difficultés pour définir des références aux exemples d'objets.

Dans Go, le code suivant tente d'ajouter des valeurs à une structure exemple :

<code class="go">var MyMap map[string]Example 

type Example struct {
    Id []int
    Name []string
}

package main


import (
  "fmt"
)


type Example struct {
  Id []int
  Name []string
}

func (data *Example) AppendExample(id int,name string) {
   data.Id = append(data.Id, id)
   data.Name = append(data.Name, name)
}

var MyMap map[string]Example

func main() {
   MyMap = make(map[string]Example)
   MyMap["key1"] = Oferty.AppendExample(1,"SomeText")
   fmt.Println(MyMap)
}</code>

Cependant, ce code est incorrect pour plusieurs raisons :

  • Erreur d'initialisation : Oferty est une variable non définie.
  • Création d'instance : Une instance d'Exemple doit être créée avant de l'ajouter à la carte.
  • Problème de référence de carte : La carte MyMap devrait contenir des références à des instances d'exemple, et non à des copies.

Le code corrigé suivant résout ces problèmes :

<code class="go">package main

import "fmt"

type Example struct {
    Id []int
    Name []string
}

func (data *Example) AppendOffer(id int, name string) {
    data.Id = append(data.Id, id)
    data.Name = append(data.Name, name)
}

var MyMap map[string]*Example

func main() {
    obj := &amp;Example{[]int{}, []string{}}
    obj.AppendOffer(1, "SomeText")
    MyMap = make(map[string]*Example)
    MyMap["key1"] = obj
    fmt.Println(MyMap)
}</code>

Dans ce code corrigé :

  • Une instance d'Exemple (obj) est créée avant de l'ajouter à la carte.
  • La carte MyMap contient des références à Exemples d'instances utilisant des pointeurs (*Exemple).
  • La méthode AppendOffer est utilisée pour ajouter des valeurs aux champs de tableau de l'exemple d'instance.

En implémentant ces corrections, le code ajoute correctement valeurs aux tableaux de la carte tout en préservant les références d'objet.

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