Anexando valores a matrizes dentro de um mapa no Go
Ao trabalhar com mapas no Go, manipular matrizes dentro desses mapas pode ser um desafio. Este artigo fornece uma solução para o problema de anexar valores a matrizes armazenadas dentro de um mapa.
Para entender o problema, considere o seguinte código:
type Example struct {
Id []int
Name []string
}
var MyMap map[string]Example
Aqui, MyMap é um mapa que mapeia strings para instâncias da estrutura de exemplo. A estrutura de exemplo contém arrays Id e Name. O objetivo é anexar valores a essas matrizes.
A tentativa inicial de fazer isso geralmente envolve chamar métodos na estrutura Exemplo e passar um receptor de ponteiro para acessar e modificar as matrizes. No entanto, atribuir diretamente o resultado de Oferty.AppendExample(1, "SomeText") a MyMap["key1"] não funcionará porque o mapa armazena uma cópia da estrutura de exemplo, não a estrutura em si.
O a solução está em modificar o código da seguinte forma:
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 := &Example{[]int{}, []string{}}
obj.AppendOffer(1, "SomeText")
MyMap = make(map[string]*Example)
MyMap["key1"] = obj
fmt.Println(MyMap)
}
Ao criar uma instância da estrutura Exemplo e armazenar uma referência a ela no mapa (usando um tipo de ponteiro), podemos modificar os arrays diretamente. O método AppendOffer opera em um ponteiro para a estrutura de exemplo, permitindo-nos acrescentar valores às matrizes.
Esta solução anexa efetivamente valores às matrizes dentro da estrutura de exemplo, armazenadas no MyMap. Ele fornece uma abordagem clara e concisa para gerenciar arrays dentro de mapas em Go.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3