Go での任意の型のゼロ値の決定
Go では、多くの場合、変数がゼロ値であるかどうかを簡単に決定できます。 。ただし、直接比較できない型を扱う場合、比較が困難になる可能性があります。特に、単純な等価性チェックを使用してスライスを評価することはできません。
提案される解決策の 1 つは次のとおりです。
var v ArbitraryType v == reflect.Zero(reflect.TypeOf(v)).Interface()
ただし、このアプローチは型の等価性に依存しており、機能しないため失敗します。
幸いなことに、Go 1.13 では、reflect パッケージに Value.IsZero() メソッドが導入されました。このメソッドは、型に関係なく、値がゼロ値であるかどうかを判断する簡単な方法を提供します。
if reflect.ValueOf(v).IsZero() { // v is zero, do something }
このメソッドは、基本的な型だけでなく、チャネルなどのより複雑な型のゼロ値も検出できます。 、関数、配列、インターフェイス、マップ、ポインター、スライス、安全でないポインター、さらには構造体まで。 Value.IsZero() を利用することで、開発者は型に依存しない汎用的な方法でゼロ値を簡単にチェックできます。
以上がGo で任意の型のゼロ値を確実に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。