golang 参数都使用指针传递有什么缺点

type A struct{}

func test(a *A) {
    
}

我们在调用test方法时,参数a传递的类型可能为 a *A 或者 a A,既然传递指针的时候可以减少值拷贝,为什么参数不统一传递一个指针类型呢,不管读取或者修改对象都很方便(排除map和slice这种参数,同样排除掉那种只想传递值拷贝的情况)

阅读 6k
4 个回答

误修改。自己写代码到没什么,假入项目很大,或者你写的开源库,一定要保证字段的归属问题。一般的解决方案都是不可导出字段加方法。

作为函数的参数的时候,传递指针有时候需要频繁的 取值 操作。而方法的接受者指针可以自动转换。

是的,你的想法是对的,这样效率高,动态语言如python、javascript都是这样做的。只不过比较麻烦

会更容易遇到panic👀

新手上路,请多包涵

指针传递会引发内存逃逸,会增加GC的压力。除非是大对象,一般不太用指针。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题