go - 定义函数接收器还是在参数中传递结构指针?
问题描述
来自 Java 多年,我最近拿起了 Golang,我想知道有些不同的范式如何影响常见的实践。最重要的是:如果我定义了一个结构并且我想要一个在该结构上工作的函数(也称为方法),我是将函数定义为“属于”该结构还是将指针传递给该结构自己的功能体?换句话说:
func (c *Component) initState()
或者
func initState(c *Component)
由于 Golang 中没有真正的对象/类概念,是否有任何一个比另一个有优势(例如 Java 用户的可读性或语义清晰度除外)?我大多会选择第一个替代方案,但我的观点可能会因在面向对象的世界中工作一段时间而产生偏见,这就是我问的原因。
解决方案
区别主要是语义上的:是initState
的行为 Component
,还是在上运行 Component
的函数?
有一个语法差异,那就是只有方法(带有接收器的函数)才能满足接口。如果这与您的情况无关,请遵循语义区别。
推荐阅读
- qt - ListView QML中图像的来源是什么
- wordpress - addEventListener 用于将 gtag 事件跟踪到 Wordpress 页面
- javascript - 如何在 web js 文件中“要求”requirejs?
- django - 在 django 中将属性添加到其他应用程序的模型
- javascript - Spring Boot 和 JavaScript:如何访问 promise 对象字段?
- flutter - 在两个单独的小部件之间为定位容器设置动画
- reactjs - 错误:“node-sass”版本 5.0.0 与 ^4.0.0 不兼容
- javascript - Redux React 路由器:无法访问受保护/私有路由
- javascript - 生成最小值和最大值之间的数字数组,但也生成两个值之间的固定间隔
- python - 如何在图形网络中分割节点(弧节点?)的断开连接区域?