go - 关于使用函数与对对象进行操作的方法是否存在“惯用”观点?
问题描述
在 Golang 中有两种方法可以完成对对象(嗯,值)的修改:
type Node struct {
Name string
}
// First way
func SetName(node *Node) {
node.Name = "something else"
}
// Second Way
func (node *Node) SetName() {
node.Name = "something else"
}
这是纯粹基于语义/观点还是有一个原因比另一个更好(更“惯用”)?或者也许两者在不同的用例中都有效?
解决方案
当您为该类型定义方法时Node
,该类型现在实现了接口interface { SetName() }
。如果您定义一个函数,则不会发生这种情况。
如果这很重要,请使用一种方法。如果没有,您可以使用其中任何一个。
推荐阅读
- c# - 具有两个外键的实体框架关系
- ember.js - 如何在ember js中从子组件调用父组件方法
- javascript - 如何在此类中在运行时更改类的原型(使用 ES6 类)
- ios - 删除与锻炼相关的所有数据样本
- android - 我们可以从另一个 Fragment B 更改 Fragmet A 的 Linearlayout 的背景颜色吗?没有错误
- python - Keras(Tensorflow)如何计算。最后一层张量的形状?
- vue.js - 从列表中删除 vue 组件总是删除列表中的最后一个元素
- r - as.name 可以用于定位变量并修改其子元素吗?
- kubernetes - Minikube 没有启动,kubectl 连接到服务器被拒绝
- python - 将 xlrd 安装到 python3.6