2017-04-17 71 views
0

我正在通過Go瀏覽工作,並在錯誤練習中提到在Error函數中調用Sprint(f)會導致出現問題,是一個無限循環。爲什麼發生這種情況在此說明:Error, infinite loopGo Tour練習:錯誤:使用%f的Sprintf來避免無限遞歸

我在第一次執行,雖然我用的sprintf與%F動詞:

func (e ErrNegativeSqrt) Error() string { 
    return fmt.Sprintf("cannot Sqrt negative number: %f", e) 
} 

這似乎在迴避這個問題,我想知道,這是因爲%F動詞是期待一個浮動,所以它迫使它把e看作一個浮動?旅遊提到assignment requires explicit conversion,但我認爲這不會影響這種情況?

還是我完全不了了之了,這裏還有其他的事情呢?

+0

不'Sprintf'返回一個字符串,因此不受該問題? – masnun

+0

Sprint也返回字符串 –

+0

是的,沒錯。我的錯。 – masnun

回答