fix: New()/Array() 正确处理 Nil 及已经是 R 的元素,不再 panic/重复包装
New(nil) 之前会 panic,现在返回 Nil(新增的 R 空实现单例,所有操作都是
安全的空操作/零值,不用调用方每次都判空)。New([]R{...}) 和 Array() 遇到
元素本身已经是 R(包括 Nil)时直接透传,不再重新拿 reflect.Value 包一层,
避免丢失原有的空值语义或类型信息。
This commit is contained in:
+3
-6
@@ -167,13 +167,10 @@ func TestNew(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("New with nil interface", func(t *testing.T) {
|
||||
defer func() {
|
||||
if r := recover(); r == nil {
|
||||
t.Error("Expected panic with nil interface")
|
||||
}
|
||||
}()
|
||||
var data any
|
||||
New(data)
|
||||
if New(data) != Nil {
|
||||
t.Error("Expected Nil for nil interface")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user