Agregar valores a matrices dentro de un mapa en Go
Cuando se trabaja con mapas en Go, manipular matrices dentro de esos mapas puede ser un desafío. Este artículo proporciona una solución al problema de agregar valores a matrices almacenadas dentro de un mapa.
Para comprender el problema, considere el siguiente código:
type Example struct {
Id []int
Name []string
}
var MyMap map[string]Example
Aquí, MyMap es un mapa que asigna cadenas a instancias de la estructura de ejemplo. La estructura de ejemplo contiene matrices Id y Name. El objetivo es agregar valores a estas matrices.
El intento inicial de hacer esto a menudo implica llamar a métodos en la estructura de ejemplo y pasar un receptor de puntero para acceder y modificar las matrices. Sin embargo, asignar directamente el resultado de Oferty.AppendExample(1, "SomeText") a MyMap["key1"] no funcionará porque el mapa almacena una copia de la estructura de ejemplo, no la estructura en sí.
La La solución radica en modificar el código de la siguiente manera:
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)
}
Al crear una instancia de la estructura de ejemplo y almacenar una referencia a ella en el mapa (usando un tipo de puntero), podemos modificar las matrices directamente. El método AppendOffer opera en un puntero a la estructura de ejemplo, lo que nos permite agregar valores a las matrices.
Esta solución efectivamente agrega valores a las matrices dentro de la estructura de ejemplo, almacenadas en MyMap. Proporciona un enfoque claro y conciso para gestionar matrices dentro de mapas en Go.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3