在golang反映包零值reflect.Value的,reflect.value.IsValid有這些意見:什麼是golang
IsValid的報道V是否代表一個值。如果v是零值,它將返回false。如果IsValid返回false,除了String panic之外的所有其他方法。大多數函數和方法永遠不會返回無效值。如果有的話,其文件明確說明條件。
閱讀上面,我很困惑。我不知道什麼是反映的零值。價值和使用它調用isValid得到錯誤。
我寫一些代碼來測試:
var haha *int
fmt.Println(reflect.ValueOf(haha).IsValid()) //true
var hehe interface{}
fmt.Println(reflect.ValueOf(hehe).IsValid() //false
您剛剛介紹了一個示例,顯示瞭如何使用ValueOf空接口返回零值。你感到困惑的是什麼? – JimB
Go中的任何值都具有「零值」。數字爲0,「」爲字符串,零爲指針等。任何類型。所以'reflect.Value'類型的值爲零(無論如何)。這就是文檔正在討論的內容。遠離包裝反映,直到你非常熟悉Go。 – Volker
@Volker在我的工作中,我需要使用反射來實現我的項目。使用反射pkg是非常危險的,但我想嘗試和學習。我熟悉golang,但是我不使用反映pkg的普通開發 – LittleDriver