fix: New()/Array() 正确处理 Nil 及已经是 R 的元素,不再 panic/重复包装

New(nil) 之前会 panic,现在返回 Nil(新增的 R 空实现单例,所有操作都是
安全的空操作/零值,不用调用方每次都判空)。New([]R{...}) 和 Array() 遇到
元素本身已经是 R(包括 Nil)时直接透传,不再重新拿 reflect.Value 包一层,
避免丢失原有的空值语义或类型信息。
This commit is contained in:
2026-08-20 17:28:57 +08:00
parent 3915bee7b8
commit 1f48635da3
5 changed files with 110 additions and 7 deletions
+3 -6
View File
@@ -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")
}
})
}