Errores

Un error es un valor

Swift lanza excepciones. Go no. En Go, un error es un valor ordinario que retornas junto con tu resultado — no hay try/catch, ni desenrollado de pila para el caso cotidiano. Una función que puede fallar retorna dos cosas: el resultado y un error.

La convención es de hierro: el error es el último valor de retorno, y su tipo es la interface incorporada error. Cuando todo funcionó, el error es nil. Cuando algo salió mal, es un error no-nil que describe qué.

error en sí mismo es solo una interface — un método, Error() string. Cualquier cosa que pueda describirse a sí misma como un string es un error. (Sí, es exactamente la idea de interface de la Lección 1.)