2012-05-02 13 views

risposta

9

È tipo asserzione. Non riesco a spiegarlo meglio di the spec.

+0

Grazie. In questo senso è simile a un cast? – OscarRyz

+2

Beh, solo "simili". Il casting è chiamato [conversion] (http://golang.org/ref/spec#Conversions) in Go. Potrebbe essere giusto dire che la conversione avviene in fase di compilazione e l'asserzione in fase di runtime. – Mostafa

0

È un'asserzione di tipo. L'istruzione if sta verificando se err è anche un *exec.ExitError. Il ok ti consente di sapere se era o non era. Infine, exiterr è err, ma "convertito" in *exec.ExitError. Funziona solo con i tipi interface.

È inoltre possibile omettere lo ok se si è sicuri al 100000 percento del tipo sottostante. Ma, se ometti ok e risulta che ti sbagliavi, otterrai un panic.

// find out at runtime if this is true by checking second value 
exitErr, isExitError := err.(*exec.ExitError) 

// will panic if err is not *exec.ExitError 
exitErr := err.(*exec.ExitError) 

Il ok non è parte della sintassi, tra l'altro. È solo un booleano e puoi chiamarlo come vuoi.

Problemi correlati