Maison > développement back-end > Golang > le corps du texte

Comment créer des structures immuables dans Go ?

Barbara Streisand
Libérer: 2024-11-16 08:24:03
original
439 Les gens l'ont consulté

How Can You Create Immutable Structures in Go?

Utiliser des structures immuables dans Go

Dans Go, vous pourriez rencontrer le besoin d'une structure immuable, qui empêche la modification de ses champs après l'initialisation . Cela peut améliorer l'intégrité et la sécurité des données dans certains scénarios.

Pour obtenir l'immuabilité d'une structure dans Go, vous pouvez utiliser une technique qui consiste à rendre ses membres non exportés et à fournir des fonctions en lecture seule pour accéder à leurs valeurs. Voici comment implémenter cela :

package mypackage

type myImmutable struct {
  value int
}

func (s myImmutable) Value() int {
  return s.value
}
Copier après la connexion

Dans cet exemple, la structure myImmutable a une valeur de champ non exportée. Pour accéder à la valeur du champ en dehors du package, nous fournissons une fonction getter Value().

L'initialisation de la structure peut être effectuée à l'aide d'une fonction constructeur, qui crée une nouvelle instance et définit la valeur :

func NewMyImmutable(value int) myImmutable {
  return myImmutable{value: value}
}
Copier après la connexion

L'utilisation de votre structure immuable ressemblerait à ceci :

myImmutable := mypackage.NewMyImmutable(3)
fmt.Println(myImmutable.Value())  // Prints 3
Copier après la connexion

En utilisant des getters pour accéder aux champs de la structure, toute tentative de les modifier en dehors du package entraînera une erreur du compilateur. Cette approche rend effectivement la structure immuable.

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