feat:缺失Config属性回填
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
package Modles
|
||||
|
||||
import (
|
||||
"Mmx/Modles/util"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
type Settings struct {
|
||||
QuitIfNetOk bool `json:"quit_if_net_ok"`
|
||||
DemoMode bool `json:"demo_mode"`
|
||||
@@ -25,3 +30,32 @@ func (a *Config) Generate() *LoginInfo {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Config) FillDefault() *Config {
|
||||
var m = map[interface{}]map[string]interface{}{
|
||||
&a.From: {
|
||||
"Domain": "www.msftconnecttest.com",
|
||||
},
|
||||
&a.Meta: {
|
||||
"N": "200",
|
||||
"VType": "1",
|
||||
"Acid": "5",
|
||||
"Enc": "srun_bx1",
|
||||
},
|
||||
&a.Settings: {
|
||||
"Dns": "1.2.4.8",
|
||||
},
|
||||
}
|
||||
|
||||
for q, w := range m {
|
||||
t := reflect.ValueOf(q).Elem()
|
||||
for k, v := range w {
|
||||
tt := t.FieldByName(k)
|
||||
if util.Reflect.IsEmpty(tt) {
|
||||
tt.Set(reflect.ValueOf(v))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
19
Modles/util/reflect.go
Normal file
19
Modles/util/reflect.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package util
|
||||
|
||||
import "reflect"
|
||||
|
||||
type reflectR struct{}
|
||||
|
||||
var Reflect reflectR
|
||||
|
||||
func (*reflectR) IsEmpty(v reflect.Value) bool {
|
||||
switch v.Kind() {
|
||||
case reflect.Bool:
|
||||
return !v.Bool()
|
||||
case reflect.String:
|
||||
return v.String() == ""
|
||||
default:
|
||||
panic("未设定值")
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user