檢查Golang 中任意類型的零值
程式設計中的常見任務之一涉及確定變數是否已初始化或具有其值預設值。然而,由於所有類型都缺乏通用的零值,這在 Golang 中可能具有挑戰性。
比較的挑戰
將變數與變數進行比較的傳統方法反射的Zero() 值並不總是有效,因為並非所有類型都具有可比性。例如,切片不具有可比性,因此無法使用以下程式碼:
var v ArbitraryType if v == reflect.Zero(reflect.TypeOf(v)).Interface() { // v is zero }
使用Value.IsZero() 的解決方案
幸運的是,Go 1.13引入了反射包中的Value.IsZero() 方法。此方法提供了一種檢查任意類型的變數是否為零的解決方案。語法為:
reflect.ValueOf(v).IsZero()
此方法不僅適用於基本類型,也適用於for:
陣列
介面地圖if reflect.ValueOf(v).IsZero() { // v is zero }Ptr切片UnsafePointer結構體使用範例用例
以上是如何檢查 Go 中任意類型的零值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!