Maison > développement back-end > Golang > Comment dois-je initialiser les champs de carte dans Go Structs ?

Comment dois-je initialiser les champs de carte dans Go Structs ?

Linda Hamilton
Libérer: 2024-12-05 14:22:11
original
283 Les gens l'ont consulté

How Should I Initialize Map Fields in Go Structs?

Bonnes pratiques pour initialiser les champs de carte dans les structures Go

Dans Go, il est courant de définir des structures qui contiennent des champs de carte. Cependant, comprendre la bonne approche pour initialiser ces cartes peut prêter à confusion. Cet article explore diverses méthodes d'initialisation des champs de carte dans les structures dans Go, en traitant des limitations de chaque option.

Le problème

Initialement introduit dans un exemple de code, en essayant de initialiser un champ de carte dans une structure sans initialisation appropriée peut entraîner une erreur d'exécution en raison de l'affectation à des cartes nulles. Une solution suggérée était de créer un constructeur, bien que cette approche présente des inconvénients.

Solution 1 : Constructeurs

Un constructeur est une fonction qui initialise et renvoie une nouvelle instance d'une structure. Il fournit un moyen centralisé et contrôlé de configurer l'état initial de la structure, y compris l'initialisation des cartes.

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

Solution 2 : ajouter une méthode de connexion

Une autre option consiste à utiliser une méthode de connexion supplémentaire qui vérifie si la carte est initialisée et l'initialise si nécessaire. Cette approche permet plus de flexibilité et peut être utile dans les cas où vous souhaiterez peut-être ajouter des connexions au graphique de manière dynamique.

func (g *Graph) add_connection(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

Autres options

Initialisation explicite

Au lieu d'utiliser un constructeur ou d'ajouter une méthode de connexion, vous pouvez initialiser explicitement la carte dans la structure. Cela nécessite de l'attribuer à make(map[keyType]valueType) lors de l'initialisation.

type Graph struct {
    connections map[Vertex][]Vertex
}

func main() {
    g := Graph{connections: make(map[Vertex][]Vertex)}
    // ...
}
Copier après la connexion

Choisir la bonne approche

La meilleure approche pour initialiser les champs de carte dans Go les structures dépendent des exigences spécifiques de votre code. Si vous avez besoin d’un processus d’initialisation clair et contrôlé, les constructeurs peuvent constituer un choix approprié. Pour les cas où vous souhaitez plus de flexibilité ou un comportement dynamique, la méthode d'ajout de connexion peut être appropriée. L'initialisation explicite offre une alternative directe et concise mais nécessite une affectation explicite.

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