2015-07-23 17 views
7

Che cos'è (c App) nella seguente dichiarazione di funzione?Sintassi della dichiarazione delle funzioni in Go

func (c App) SaveSettings(setting string) revel.Result { 
-------------------------------------------------------------------------------------- 
func              Keyword to define a function 
    (c App)            ???? 
      SaveSettings         Function name 
         (setting string)     Function arguments 
              revel.Result Return type 
+1

Invece di chiedere a queste domande io suggerirei scrematura breve e facile da trovare [Go Language Specification] (https://golang.org/ref/spec# Method_declarations). IMO, domande e risposte che non fanno altro che rigurgitare parti di una fonte prontamente disponibile e più autorevole non sono utili. –

+2

1) Non direi che il documento sia breve. 2) Ho già guardato quel documento, ma stavo guardando le dichiarazioni di funzione, non le dichiarazioni di metodo, perché non so nulla su Go: https://golang.org/ref/spec#Function_declarations 3) In realtà tutto può essere trovato in più fonti autorevoli. Penso che questa domanda possa essere utile per le persone future che imparano Go e si adatta perfettamente allo Stack Overflow. – Ivan

+0

@Ivan, d'accordo, stavo guardando anche a Function_declarations! E il doc non è corto. – stackoverflower

risposta

13

(c App) dà il nome e il tipo di ricevente, equivalente di Go di C++ o di this JavaScript o Python di self. c è il nome del destinatario qui, dal in Go it's conventional to use a short, context-sensitive name instead of something generic like this. Vedi http://golang.org/ref/spec#Method_declarations -

Un metodo è una funzione con un ricevitore. Il ricevitore viene specificato tramite una sezione di parametro aggiuntivo che precede il nome del metodo.

e il suo esempio:

func (p *Point) Length() float64 { 
    return math.Sqrt(p.x * p.x + p.y * p.y) 
} 
Problemi correlati