feat:缺失Config属性回填

This commit is contained in:
Mmx
2021-05-11 12:43:54 +08:00
parent 022f1ac965
commit 8a82db3422
3 changed files with 60 additions and 17 deletions

View File

@@ -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
View 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
}