為什麼Error() 方法會覆寫fmt.Println() 中的String() 方法
當你同時實作String() 和Error 時對於自訂類型的() 方法,您可能會遇到fmt.Println() 優先考慮Error()方法而不是 String() 的情況
這是因為 fmt 套件在選擇呼叫哪個方法來格式化物件時採用層次結構。根據套件文檔,應用以下操作順序:
因為在此層次結構中,錯誤接口的排名高於String() 接口,如果給定對象實現了這兩種方法,則fmt.Println() 將優先考慮Error()方法。這是因為錯誤通常需要更緊急的關注,並且應該以清晰簡潔的方式及時傳達。
在提供的範例中,Person 類型實作了 String() 和 Error() 方法。但是,Error() 方法僅傳回字串“Failed”,而 String() 方法則提供有關此人的更豐富的資訊描述。當您使用 fmt.Println() 列印 Person 類型的實例時,您只會看到「失敗」訊息,因為由於上述層次結構,Error() 方法優先於 String() 方法。
以上是為什麼對於自訂類型,'fmt.Println()”更喜歡'Error()”而不是'String()”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!