Maison >développement back-end >Golang >Comment créer des structures immuables dans Go ?

Comment créer des structures immuables dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 08:24:03487parcourir

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
}

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}
}

L'utilisation de votre structure immuable ressemblerait à ceci :

myImmutable := mypackage.NewMyImmutable(3)
fmt.Println(myImmutable.Value())  // Prints 3

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!

Déclaration:
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