gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/mapx/world-map.go (about)

     1  package mapx
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  func ToMapInterface(st interface{}, val interface{}, args ...interface{}) (r interface{}) {
     8  	r = cloneAny(st, val, true)
     9  	return
    10  }
    11  
    12  func ToMapStruct(st IToMap, val interface{}, args ...interface{}) {
    13  	m, ok := val.(map[string]interface{})
    14  	if ok == true {
    15  		st.ToMap(m, args...)
    16  	}
    17  	return
    18  }
    19  
    20  func ToMapStructByType(val interface{}, args ...interface{}) (r interface{}) {
    21  
    22  	toval, ok := val.(IToMap)
    23  	if ok {
    24  		m := map[string]interface{}{}
    25  		toval.ToMap(m, args...)
    26  		if stname, ok := toval.(IStructName); ok {
    27  			m["_type"] = stname.StructName()
    28  		}
    29  		r = m
    30  	} else {
    31  		switch v := val.(type) {
    32  		case []interface{}:
    33  			r = cloneArray(v, []interface{}{}, true)
    34  		case map[string]interface{}:
    35  			m := map[string]interface{}{}
    36  			r = cloneAny(v, m, true)
    37  		default:
    38  			r = v
    39  		}
    40  	}
    41  
    42  	return
    43  }
    44  
    45  func ToMapAllStruct(st IToMapAll, val interface{}, args ...interface{}) {
    46  	m, ok := val.(map[string]interface{})
    47  	if ok == true {
    48  		if st != nil {
    49  			st.ToMapAll(m, args...)
    50  		}
    51  	}
    52  	return
    53  }
    54  
    55  func CreateConfigMap2(keys []string, r map[string]interface{}, val interface{}) {
    56  	cur := r
    57  	l := len(keys)
    58  	for i := 0; i < l; i++ {
    59  		k := keys[i]
    60  		if i != l-1 {
    61  			a := map[string]interface{}{}
    62  			cur[k] = a
    63  			cur = a
    64  		} else {
    65  			cur[k] = val
    66  		}
    67  	}
    68  
    69  	return
    70  }
    71  
    72  func CreateConfigMap3(keys string, r map[string]interface{}, val interface{}) {
    73  	arrs := strings.Split(keys, ".")
    74  
    75  	cur := r
    76  	l := len(arrs)
    77  	for i := 0; i < l; i++ {
    78  		k := arrs[i]
    79  		if i != l-1 {
    80  			a := map[string]interface{}{}
    81  			cur[k] = a
    82  			cur = a
    83  		} else {
    84  			cur[k] = val
    85  		}
    86  	}
    87  
    88  	return
    89  }