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

Comment créer des structures immuables dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 17:33:171014parcourir

How to Create Immutable Structs in Go?

Création de structures immuables dans Go

Les structures immuables, une fois initialisées, autorisent uniquement les opérations de lecture sur leurs champs sans possibilité de modification. Y parvenir dans Go nécessite une approche légèrement différente de celle dans certains autres langages.

La solution

Pour créer des structures immuables dans Go :

  1. Utiliser les noms de champs non exportés : Rendre les champs de la structure non exportés en commençant leurs noms par une minuscule lettre. Cela restreint l'accès aux champs en dehors du package de la structure.
  2. Fournir des fonctions de lecture : Créez des fonctions de lecture dans la structure pour autoriser l'accès aux champs non exportés. Ces fonctions renvoient généralement une copie de la valeur du champ.

Exemple de code

package mypackage

type ImmutableStruct struct {
  value int
}

func (s ImmutableStruct) Value() int {
  return s.value
}

func NewImmutableStruct(value int) ImmutableStruct {
  return ImmutableStruct{value: value}
}

Utilisation

myImmutableStruct := mypackage.NewImmutableStruct(3)
fmt.Println(myImmutableStruct.Value()) // Prints 3

Dans cet exemple, l'ImmutableStruct a des champs non exportés et une fonction de lecture (Value()) pour accéder à la valeur champ. Une fois initialisé, il ne peut pas être modifié depuis l'extérieur du package mypackage.

Cette technique garantit l'immuabilité tout en conservant la flexibilité des structures et la modularité des packages Go.

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