golang中map/slice类型的深拷贝

转自:https://www.jianshu.com/p/b8820fd28c30

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

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
}

猜你喜欢

转载自blog.csdn.net/chushoufengli/article/details/114948124