仅做个人备份,浏览请看原文

 

func DeepCopy(value interface{}) interface{} {
    if valueMap, ok := value.(map[string]interface{}); ok {
        newMap := make(map[string]interface{})
        for k, v := range valueMap {
            newMap[k] = DeepCopy(v)
        }

        return newMap
    } else if valueSlice, ok := value.([]interface{}); ok {
        newSlice := make([]interface{}, len(valueSlice))
        for k, v := range valueSlice {
            newSlice[k] = DeepCopy(v)
        }

        return newSlice
    }

    return value
}