「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GO構造体でデフォルトと明示的にゼロ値を明示的に設定するにはどうすればよいですか?

GO構造体でデフォルトと明示的にゼロ値を明示的に設定するにはどうすればよいですか?

2025-03-12に投稿されました
ブラウズ:246

How Can I Differentiate Between Default and Explicitly Set Zero Values in Go Structs?

デフォルト値とgo

の識別フィールドを区別する、原始型にはデフォルト値があります。たとえば、integer(int)は0に初期化されます。ただし、構造体を操作する場合、0値と非初期化されたフィールドを区別することは困難です。 「ログ」をインポートする タイプテストstruct { testintone int testinttwo int } func main(){ s:= test {testintone:0} log.println(s) }

このコードでは、testintoneとtestintwoの両方がゼロです。ただし、TestIntoneは明示的に0に設定されていますが、TestInttwoはデフォルト値によって初期化されています。このあいまいさは、どのフィールドが明示的に設定されているかを判断する際に混乱につながる可能性があります。したがって、ゼロ値が初期化または意図的な割り当ての結果であるかどうかを知ることは不可能です。 nil。
package main

import "log"

type test struct {
    testIntOne int
    testIntTwo int
}

func main() {
    s := test{testIntOne: 0}

    log.Println(s)
}

タイプテストstruct { testintone *int testinttwo *int }

セッターメソッドを作成します:

フィールドの値を設定する方法を作成し、設定されたかどうかを追跡できます。 testintone int testinttwo bool // testinttwoが設定されているかどうかを追跡します } func(t *test)settestinttwo(val int){ t.testinttwo = val t.issettestinttwo = true } func main(){ s:= test {} S.Settestinttwo(0) fmt.println(s.issettestintinttwo)// output:true }

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3