2012-05-02 10 views

Respuesta

9

Es una afirmación de tipo. No puedo explicarlo mejor que the spec.

+0

Gracias. En ese sentido, ¿es similar a un elenco? – OscarRyz

+2

Bueno, solo "similar". La función de conversión se llama [conversión] (http://golang.org/ref/spec#Conversions) en Go. Puede ser correcto decir que la conversión ocurre en tiempo de compilación y aserción en tiempo de ejecución. – Mostafa

0

Es una afirmación de tipo. Esa declaración if está comprobando si err también es *exec.ExitError. El ok le permite saber si fue o no fue. Finalmente, exiterr es err, pero "convertido" a *exec.ExitError. Esto solo funciona con interface tipos.

También puede omitir el ok si está 100000 por ciento seguro del tipo subyacente. Pero si omite ok y resulta que estaba equivocado, obtendrá 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) 

El ok no es parte de la sintaxis, por cierto. Es solo un booleano y puedes ponerle el nombre que quieras.

Cuestiones relacionadas