首页 > 解决方案 > 关于使用函数与对对象进行操作的方法是否存在“惯用”观点?

问题描述

在 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"
}

这是纯粹基于语义/观点还是有一个原因比另一个更好(更“惯用”)?或者也许两者在不同的用例中都有效?

标签: go

解决方案


当您为该类型定义方法时Node,该类型现在实现了接口interface { SetName() }。如果您定义一个函数,则不会发生这种情况。

如果这很重要,请使用一种方法。如果没有,您可以使用其中任何一个。


推荐阅读