2015-03-13 18 views
10

Po nurkowanie w docs nie mogłem znaleźć odpowiedzi na moje następujące pytanie:Go „to” -słowo kluczowe

Czy istnieje jakikolwiek powód, przed użyciem this za odnoszące się do bieżącego obiektu, jak w poniższym przykładzie?

type MyStruct struct { 
    someField string 
} 

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

To nie jest idiomatyczne w Go. W Pythonie używasz również 'self' zamiast' this' lub dowolnej innej nazwy, ponieważ jest idiomatyczna. – Kos

+0

'this',' self', 'me', etc nigdy nie były opisowe lub dobre identyfikatory i zawsze były złym pomysłem. Jeśli utkniesz w języku, który wymaga użycia jednego z nich, nie masz wyboru. Go nie jest takim językiem, więc użyj czegoś opisowego i rozsądnego. –

Odpowiedz

16

Nie ma techniczny nie powód, aby to zrobić.

To wykracza przeciwko ogólnych wytycznych, jak wyjaśniono here:

Nie używać nazw rodzajowych, takich jak „ja”, „ta” albo „ja”, identyfikatorów typowy języków obiektowych tym miejscu większy nacisk na metody w przeciwieństwie do funkcji.

Chciałbym również dodać, że w językach używających this (lub self) this jest zawsze wskaźnik. Dla odbiorników metod w Go, nie musi tak być.

+0

To jest dobry koder do kodowania stylów, dziękuję. – Atmocreations

+6

Jaka byłaby dobra, nietypowa nazwa używana w definicjach funkcji? W 'func (p Person) Foo()', 'p' nie wydaje się być bardziej opisowe niż' this'. – 425nesp

+0

Ogólna charakterystyka i opisowość (?) To nie to samo. 'p' jest nietypowym wyborem, ale * samo w sobie * nie jest opisem. Jego opisowość pochodzi od kombinacji z jej typem. – publysher