ホームページ > バックエンド開発 > Golang > Go で構造体のプロパティが設定されているかどうかを検出するにはどうすればよいですか?

Go で構造体のプロパティが設定されているかどうかを検出するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-10 19:40:17
オリジナル
816 人が閲覧しました

How Can I Detect if a Struct Property Has Been Set in Go?

構造体の変更されたプロパティの検出

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート