去最佳实践:功能与方法接收器模糊不清?

时间:2015-09-09 18:08:08

标签: go coding-style

在Go中何时使用方法与函数有什么最佳实践?

具体来说,我有两个结构:probeManagerprobeWorker,我正在编写一个函数run,它需要访问两个结构的成员。这可以解释为告诉管理器运行worker,或者在worker上调用run并传递管理器以进行访问,或者我可以创建一个以两个为参数的run函数:

func (m *ProbeManager) run(w *ProbeWorker) { ... }
func (w *ProbeWorker) run(m *ProbeManager) { ... }
func run(m *ProbeManager, w *ProbeWorker) { ... }

由于所有3种方法在语义上都是有效的,一种方法对另一种方法有什么好处,或者这只取决于个人偏好?

1 个答案:

答案 0 :(得分:0)

它们实际上都是等价的。接收器像其他参数一样传递给方法。既然你需要两种类型(无论如何称之为方法),它对于它的定义并不重要。就个人而言,基于此,我会使用你的三个选项中的最后一个。这对我来说更有意义,因为在其他情况下,当你需要两者时,你将方法与这两种类型之一联系起来。这只是您希望如何组织代码的问题。对于性能或应用程序行为,彼此之间没有任何好处,它们都是相同的。

编辑:最后一点。这些都不会被导出,因此它是一个私人的'或者更确切地说,一种用作包内部帮助器的方法。没有接收类型的更多理由。