ホームページ >バックエンド開発 >Golang >Go で不変の構造を作成するにはどうすればよいですか?

Go で不変の構造を作成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-16 08:24:03489ブラウズ

How Can You Create Immutable Structures in Go?

Go での不変構造の使用

Go では、初期化後のフィールドの変更を防ぐ不変構造が必要になる場合があります。 。これにより、特定のシナリオでデータの整合性とセキュリティを強化できます。

Go で構造体の不変性を実現するには、そのメンバーをエクスポートしないようにし、その値にアクセスするための読み取り専用関数を提供するという手法を採用できます。これを実装する方法は次のとおりです。

package mypackage

type myImmutable struct {
  value int
}

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

この例では、myImmutable 構造体にエクスポートされていないフィールド値があります。パッケージの外部のフィールドの値にアクセスするには、ゲッター関数 Value() を提供します。

構造体の初期化は、新しいインスタンスを作成して値を設定するコンストラクター関数を使用して実行できます。

func NewMyImmutable(value int) myImmutable {
  return myImmutable{value: value}
}

不変構造体の使用法は次のようになります。

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

ゲッターを使用して構造体のフィールドにアクセスすると、パッケージの外部で構造体のフィールドを変更しようとすると、コンパイラ エラーが発生します。このアプローチにより、事実上、構造体が不変になります。

以上がGo で不変の構造を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。