Junior — Middle
Como pode guardar objetos de forma eficiente numa estrutura de dados Map?
sobes.tech IA
Resposta da IA
No Go, para armazenar objetos de forma eficiente numa estrutura de dados map, é importante ter em conta vários aspetos:
- As chaves devem ser de tipos comparáveis (por exemplo, strings, números, ponteiros). Se a chave for de um tipo complexo, como uma estrutura, deve ser comparável.
- Os valores podem ser de qualquer tipo, incluindo ponteiros para estruturas, o que permite poupar memória e evitar copiar objetos grandes.
- Para melhorar o desempenho, pode usar ponteiros nos valores para não copiar estruturas grandes em cada atribuição.
- Inicialize o
mapcom o tamanho necessário, se souber o volume aproximado, para evitar realocações frequentes.
Exemplo:
// Definir a estrutura
type User struct {
ID int
Name string
}
// Criar um map com chave string e valor *User
users := make(map[string]*User, 100) // reservar memória antecipadamente
// Adicionar um utilizador
users["user1"] = &User{ID: 1, Name: "Alice"}
// Obter um utilizador
user := users["user1"]
fmt.Println(user.Name) // Alice
Desta forma, o uso de ponteiros nos valores e a inicialização prévia do mapa aumentam a eficiência no armazenamento de objetos.