Deep copy of map/slice type in golang

Reprinted from: https://www.jianshu.com/p/b8820fd28c30

For personal backup only, please see the original text for browsing

 

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
}

 

Guess you like

Origin blog.csdn.net/chushoufengli/article/details/114948124