Go のリフレクションによる空の値の迅速な検出
int、string、bool、またはその他の値を格納するインターフェイスを扱う場合、多くの場合、保存された値が初期化されていないかを判断するために必要になります。これは、次のいずれかに等しいかどうかをチェックすることを意味します:
解決策:
Go でこれを効率的に確認するには、リフレクションとリフレクト.Zero() を利用できます。関数:
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
説明:
注:
元のソリューションでは比較に == を使用していましたが、比較できない型には機能しない可能性があります。普遍的な互換性を確保するには、代わりにreflect.DeepEqual()を使用できます:
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
以上がリフレクションを使用して Go インターフェイスの空の値をすばやく検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。