Go深度拷贝slice、map

在Go中没有像Java、C#那种封装好的slice、map深度拷贝函数,下面封装一个

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
}
0%