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

Comment créer des structures immuables dans Go ?

Patricia Arquette
Libérer: 2024-12-04 17:33:17
original
997 Les gens l'ont consulté

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}
}
Copier après la connexion

Utilisation

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

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!

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