2014-12-14 16 views
16

Sto passando attraverso il tutorial della lingua Go.Errore, ciclo infinito

vorrei controllare la risposta a questa domanda:

Nota: una chiamata al fmt.Sprint(e) all'interno del metodo Error invierà il programma in un ciclo infinito. È possibile evitare ciò convertendo prima e: fmt.Sprint(float64(e)). Perché?

Credo che questo sia dovuto al fatto che quando viene chiamata la funzione Sprint, poiché l'errore è diverso da zero, verrà chiamato nuovamente il Error function() e così via, risultante in un ciclo infinito.

risposta

28

fmt.Sprint(e) chiamerà e.Error() per convertire il valore e in un string. Se il metodo Error() chiama fmt.Sprint(e), il programma ricorre fino a esaurimento della memoria.

È possibile interrompere la ricorsione convertendo e in un valore senza un metodo String o Error.

Problemi correlati