2015-03-13 49 views
10

后潜入文档我找不到答案,我的以下问题:围棋“这个” -keyword

有反对使用this用于参照当前对象,如下面的示例中的任何原因?

type MyStruct struct { 
    someField string 
} 

func (this MyStruct) getSomeField() string { 
    return this.someField 
} 
+3

这在Go中不是惯用的。在Python中,你也使用'self'而不是'this'或任何其他名称,因为它是惯用的。 – Kos 2015-03-13 09:23:07

+0

'这','自','我'等从未描述过或好的标识符,一直是一个坏主意。如果你被困在一种需要你使用其中一种语言的语言中,你别无选择。 Go不是这样的语言,所以使用描述性和合理的东西。 – 2015-03-13 20:17:13

回答

16

没有技术理由不这样做。

它不违背一般的准则解释here

不要使用通用名称,如“我”,“这个”或“自我”,典型的面向对象语言的标识符地方更重视方法而不是功能。

我还想补充一点,在使用this(或self)语言,this总是指针。对于Go中的方法接收器,情况并非一定如此。

+0

这是一个很好的编码风格的表格,谢谢。 – Atmocreations 2015-03-13 09:35:14

+6

在函数定义中使用什么是一个好的,非泛型的名称?在'func(p Person)Foo()'中,'p'实际上并不比'this'更具描述性。 – 425nesp 2015-03-14 02:11:22

+0

通用性和描述性(?)不一样。 'p'是一个非泛型选择,但*本身*不是很详细的描述。其描述性来自与其类型的组合。 – publysher 2015-03-14 07:26:02