登录
首页 >  Golang >  Go问答

Golang 中的深度复制map?

来源:Golang技术栈

时间:2023-05-03 16:02:07 188浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《Golang 中的深度复制map?》,以下内容主要包含golang等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

Golang 中的深度复制map?

正确答案

在 Golang 中,想要深度复制一个 map 可以通过以下方法:

func DeepCopyMap(m map[string]interface{}) map[string]interface{} {
    copyMap := make(map[string]interface{})
    for k, v := range m {
        switch v.(type) {
        case map[string]interface{}:
            copyMap[k] = DeepCopyMap(v.(map[string]interface{}))
        case []interface{}:
            copyMap[k] = DeepCopySlice(v.([]interface{}))
        default:
            copyMap[k] = v
        }
    }
    return copyMap
}

func DeepCopySlice(s []interface{}) []interface{} {
    copySlice := make([]interface{}, len(s))
    for i, v := range s {
        switch v.(type) {
        case map[string]interface{}:
            copySlice[i] = DeepCopyMap(v.(map[string]interface{}))
        case []interface{}:
            copySlice[i] = DeepCopySlice(v.([]interface{}))
        default:
            copySlice[i] = v
        }
    }
    return copySlice
}

这个方法会检查 map 中的每个值,如果是 map 或 slice 类型,就递归地调用 DeepCopyMap 或 DeepCopySlice 进行深度复制。如果是其他类型,则直接赋值给 copyMap。

今天关于《Golang 中的深度复制map?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>