12345678910111213141516171819202122232425262728 |
- package config
- import "reflect"
- type IConfig interface {
- Invalidate() error
- }
- func Invalidate(config IConfig) error {
- if config == nil || reflect.ValueOf(config).IsZero() {
- return nil
- }
- r := reflect.ValueOf(config).Elem()
- for i := 0; i < r.NumField(); i++ {
- if !r.Field(i).CanInterface() || r.Field(i).IsZero() {
- continue
- }
- if elm, ok := r.Field(i).Interface().(IConfig); ok {
- if er := elm.Invalidate(); er != nil {
- return er
- }
- }
- }
- return nil
- }
|