2
何かがゼロ値に等しいかどうかをチェックするための汎用関数が必要です。reflect.DeepEqual()を使用してポインタの値をその型のゼロ値と比較するにはどうすればよいですか?
このquestionから、値型を扱う関数を見つけることができました。このような何かをやったときに、これは私のために動作しませんでした、Unfotunately
func isZeroOfUnderlyingType(x interface{}) bool {
rawType := reflect.TypeOf(x)
//source is a pointer, convert to its value
if rawType.Kind() == reflect.Ptr {
rawType = rawType.Elem()
}
return reflect.DeepEqual(x, reflect.Zero(rawType).Interface())
}
:私はサポートポインタにそれを修正
type myStruct struct{}
isZeroOfUnderlyingType(myStruct{}) //Returns true (works)
isZeroOfUnderlyingType(&myStruct{}) //Returns false (doesn't) work
&myStruct{}
がポインタであり、間接参照する方法がないからです関数内にinterface{}
があります。そのポインタの値をその型のゼロ値と比較するにはどうすればよいですか?
あなたはあなた自身の答えを受け入れる必要があります。
私は
x
が何かへのポインタである場合をチェックする機能を更新しました。 – kostix