今天我遇到了一個奇怪的bug。我有一個功能:golang的無效vs無?
func Foo(s *someStruct) {
fmt.Printf("s is %v\n", s)
if s!=nil {
fmt.Printf("s is not nil")
...
}
}
我會打電話的功能等:
var s *someStruct
Foo(s)
然後,我決定將結構轉換爲接口:
func Foo(s someStructInterface) {
fmt.Printf("s is %v\n", s)
if s!=nil {
fmt.Printf("s is not nil")
...
}
}
這給了我一個奇怪的輸出:
s is null
s is not nil
Wh ile我預計會得到s is nil
,這是我平時得到的。 Go在這種情況下null和nil有什麼區別,我如何檢查是否有null或nil來正確執行代碼?
[隱藏零值,理解爲什麼golang這裏失敗]的可能的複製(http://stackoverflow.com/questions/29138591/hiding-nil-values-understanding-why-golang-fails-here#29138676)。 – icza
您的界面示例中的輸出是'',而's不是零'。 –
peterSO