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

Go中基于Map定义的自定义类型传参时是否仍按引用传递?

关于Go中自定义Map类型的函数参数传递问题

首先明确:Go语言里所有参数传递都是值传递,但map类型本质是一个指向底层哈希表的指针封装体,你定义的myMapType作为map的自定义类型,完全继承了这种特性。

当你把myMapType类型的变量传给doSomething函数时,传递的是这个map指针的副本——注意,复制的只是8字节左右的指针值(64位系统),而不是整个map的所有数据。这个副本和原指针指向的是同一个底层哈希表,所以在函数内对map内容的修改(比如添加键值对、修改切片元素)会直接反映到原map上。

回到你的问题:完全不需要使用指针。传递自定义map类型的开销极小,不会产生不必要的数据复制。如果强行用指针(比如*myMapType),反而会多一层解引用的操作,既没必要,也不会带来性能提升。

只有一种场景需要传指针:如果你的函数需要修改变量本身的指针指向(比如把传入的m重新赋值为一个全新的map),这时候才需要传递指针类型,否则纯操作map内容的话,直接传自定义map类型就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:06:43