構造体の変更されたプロパティの検出
Go では、構造体のプロパティが設定されているかどうかを判断するのが難しい場合があります。他の言語とは異なり、構造体内の初期化されていない値をチェックする組み込みメカニズムはありません。
ポインターの使用 (dyoo の提案)
dyoo が述べたように、ポインターの使用for struct プロパティを使用すると、値の設定と設定解除を区別できます。ポインタが nil の場合、値は未設定とみなされます。
ポインタの例:
type MyStruct struct { Property *string } // ... if s1.Property != nil { // do something with this }
空の文字列の使用 (メンテナの応答)
ポインタの代わりに文字列を使用したい場合は、値を空の文字列と比較して、値が設定されているかどうかを判断できます。
文字列の例:
type MyStruct struct { Property string } // ... if s1.Property != "" { // do something with this }
提供されたコード サンプルでは、s1.Property s2.Property は空ではないため、設定されていると見なされますが、s2.Property は空であり、設定されていると見なされます。 unset.
代替メソッド
上記のアプローチに加えて、リフレクションを使用したり、プロパティの変更を追跡する独自のセッター関数を定義したりするなど、他のオプションを検討することもできます。価値。ただし、これらのメソッドには追加のコードと複雑さが必要になる場合があります。
以上がGo で構造体のプロパティが設定されているかどうかを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。