数据接收指针数据clone并初始化

This commit is contained in:
2024-11-05 18:04:27 +08:00
parent d0dc0fba97
commit 8cf014ac0a
2 changed files with 38 additions and 6 deletions

32
init.go
View File

@ -8,7 +8,9 @@
package config
import (
"errors"
"github.com/jessevdk/go-flags"
"reflect"
)
// Init 初始化配置
@ -21,8 +23,38 @@ func Init(configReceiver any) error {
err error
)
if err = checkConfigReceiver(configReceiver); err != nil {
return err
}
if _, err = flags.Parse(configReceiver); nil != err {
return err
}
return nil
}
// checkConfigReceiver 校验配置接收者必须是指针
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:16 2024/11/5
func checkConfigReceiver(configReceiver any) error {
if nil == configReceiver {
return errors.New("config receiver is nil")
}
receiverType := reflect.TypeOf(configReceiver)
if receiverType.Kind() != reflect.Ptr {
return errors.New("config receiver is not a pointer")
}
return nil
}
// cloneReceiver ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:16 2024/11/5
func cloneReceiver(configReceiver any) any {
dataType := reflect.TypeOf(configReceiver).Elem()
return reflect.New(dataType).Interface()
}