2015-03-13 94 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