如果我有一個包含nil
類型爲A
的指針的結構,使用reflect.DeepEqual
來檢查該屬性是否爲nil
將導致false
,這使我感到奇怪的行爲。結構不深的nil指針等於nil?
type Container struct {
O *Obj
}
type Obj struct {
Message string
}
var c Container
eq := reflect.DeepEqual(c.O, nil)
fmt.Printf("O value: %v, is nil: %t", c.O, eq)
// Prints: "O value: <nil>, is nil: false"
具體而言,我編組JSON對象成一個結構,其中,我想測試特定屬性是nil
當相應的JSON結構不包含它。如果reflect.DeepEqual
不是要走的路,我該怎麼做?您傳遞給reflect.DeepEqual()
你是對的..讓看文檔:https://golang.org/pkg/reflect/#DeepEqual。在第一段中回答你的問題 - 不同類型的值永遠不會相等。其餘的答案在這裏https://golang.org/doc/faq#nil_error – lofcek