审查生成的设置修补器

来自 reflect.Type 与 reflect.Value
Go 1.27 高级 12分钟 找出 4处问题

根据任务要求审查这个生成的设置更新器。

只通过 edit 标签更新非 nil 的 *Settings;遇到未知、nil 或不兼容值时返回错误且不能 panic;绝不暴露 AdminToken,并在批处理中复用已验证的元数据。

Go
package config

import "reflect"

type Settings struct {
    Host       string `edit:"host"`
    Port       int    `edit:"port"`
    AdminToken string
}

func Apply(dst any, changes map[string]any) error {
    target := reflect.ValueOf(dst).Elem()
    for name, raw := range changes {
        field := target.FieldByName(name)
        if !field.IsValid() {
            continue
        }
        candidate := reflect.ValueOf(raw)
        if candidate.Type().ConvertibleTo(field.Type()) {
            field.Set(candidate.Convert(field.Type()))
        }
    }
    return nil
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误