feat: 完善 normalizeInputValue 支持 valuex.Accessor 并优化代码

- 在 valuex.Accessor 接口中添加 Raw() 方法
- normalizeInputValue 支持 valuex.Accessor 和 []valuex.Accessor 类型
- 提取 normalizeAccessorSlice 泛型函数消除重复代码
- 使用 switch 语句替代 if-else 链提高可读性
- 添加相关测试用例确保功能正确性
This commit is contained in:
2025-12-16 16:14:46 +08:00
parent 7d17293df3
commit baad0cadfc
4 changed files with 118 additions and 38 deletions

View File

@@ -1,5 +1,7 @@
package valuex
import "reflect"
// nilAccessor 是一个空实现,用于表示不存在或空值的访问器
// 所有转换方法都会返回对应类型的零值
type nilAccessor struct{}
@@ -12,6 +14,10 @@ func (n *nilAccessor) Lookup(path string) (Accessor, bool) {
return n, false
}
func (n *nilAccessor) Raw() reflect.Value {
return reflect.Value{}
}
// Ptr 返回 nil
func (n *nilAccessor) Ptr() any {
return nil