You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang中interface类型Map的值变更:修改变量t为何影响x?

问题解答:修改变量t为何会影响变量x?

代码示例

package main

import "fmt"

func main() {
    x := make(map[string]interface{}, 10)
    x["something"] = map[string]interface{} {
        "dune": "dune", "age": 12
    }

    t := x["something"].(map[string]interface{})
    t["ACM"] = 34.12

    fmt.Println(x)
}

输出结果

map[something:map[ACM:34.12 age:12 dune:dune]]

原因解释

在Go语言里,map属于引用类型,而非值类型。当执行t := x["something"].(map[string]interface{})时,并没有复制x["something"]对应的map数据,只是把指向该map底层数据结构的引用赋值给了变量t。

也就是说,t和x["something"]指向的是同一块内存里的map。所以通过t给这个map添加新键值对时,本质就是在修改x中存储的那个map,最终打印x时自然会看到变化。

内容的提问来源于stack exchange,提问作者sharma spg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:45:42