diff --git a/goini.go b/goini.go index 4fc44d7..e81818d 100644 --- a/goini.go +++ b/goini.go @@ -288,3 +288,19 @@ func (ini *GoINI) MapToStruct(ptr interface{}) error { ini.mapStruct(v) return nil } + +// MapSectionToStruct 将指定分区映射到一个结构体 +// 入参: name 分区名称, ptr 结构体指针 +// 返回: error 错误信息 +func (ini *GoINI) MapSectionToStruct(name string, ptr interface{}) error { + v := reflect.ValueOf(ptr) + if !v.IsValid() || v.Kind() != reflect.Ptr || v.IsNil() { + return errStructPointerRequired + } + v = v.Elem() + if v.Kind() != reflect.Struct { + return errStructPointerRequired + } + ini.mapSection(v, ini.normalizeSection(name)) + return nil +}