Maison > développement back-end > Golang > Comment initialiser au mieux les cartes dans les champs Go Struct ?

Comment initialiser au mieux les cartes dans les champs Go Struct ?

Susan Sarandon
Libérer: 2024-12-14 07:20:39
original
622 Les gens l'ont consulté

How to Best Initialize Maps in Go Struct Fields?

Meilleures pratiques pour initialiser des cartes dans les structures Go

Lors de la création d'une structure contenant un champ de carte, le compilateur lui donne par défaut la valeur nil, ce qui peut entraîner des erreurs d'exécution lors de l'accès à la carte sans initialisation appropriée. Plusieurs méthodes peuvent répondre efficacement à ce besoin d'initialisation.

Fonction constructeur

Une approche recommandée consiste à implémenter une fonction constructeur spécifiquement pour la structure. Cette fonction est chargée d'initialiser le champ de la carte au moment de la création de la structure, garantissant que la carte n'est jamais nulle.

Exemple :

func NewGraph() *Graph {
    var g Graph
    g.connections = make(map[Vertex][]Vertex)
    return &g
}
Copier après la connexion

Méthode avec vérification d'initialisation

Une autre option consiste à créer une méthode dans la structure qui ajoute des connexions à la carte. Cette méthode doit d'abord vérifier si la carte est nulle et, si c'est le cas, l'initialiser avant d'effectuer toute autre action.

Exemple :

func (g *Graph) AddConnection(v1, v2 Vertex) {
    if g.connections == nil {
        g.connections = make(map[Vertex][]Vertex)
    }
    g.connections[v1] = append(g.connections[v1], v2)
    g.connections[v2] = append(g.connections[v2], v1)
}
Copier après la connexion

Initialisation explicite de la carte dans la définition de structure

Dans certains scénarios, il peut être acceptable d'initialiser explicitement la carte dans la définition de la structure elle-même. Cette approche est utile lorsque la carte est immuable ou que ses valeurs sont connues au moment de la compilation.

Exemple :

type Graph struct {
    connections map[Vertex][]Vertex
}
Copier après la connexion

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