Go 中透過反射快速偵測空值
在處理儲存int、string、bool 或其他值的介面時,通常需要確定儲存的值是否未初始化。這意味著檢查它是否等於以下任何一個:
解決方案:
要在Go 中有效地檢查這一點,您可以利用反射和Reflect.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中文網其他相關文章!