Error() 覆寫fmt.Println 中的String()
在Go 程式語言中,當一個型別同時實作String()和Error() 方法中,fmt.Println 函數優先於Error()。這表示如果這兩種方法都是針對特定類型實作的,則 fmt.Println 將使用 Error() 產生的輸出。
要理解為什麼會出現這種情況,請務必查看以下文件: fmt 套件。根據文檔,有特定的規則來管理 fmt 如何格式化不同類型的資料。這些規則按以下順序應用:
在提供的範例中,Person type 實作了 String() 和 Error() 方法。但是,當呼叫 fmt.Println 函數列印 Person 類型時,會呼叫 Error() 方法而不是 String() 方法。這是因為根據 fmt 套件文件中概述的規則,Error() 方法優先於 String() 方法。
因此,當一個類型同時實作 String() 和 Error() 方法時, fmt.Println 函數將始終使用 Error() 方法的輸出。這是因為按照格式化規則的順序,Error() 方法的排名高於 String() 方法。
以上是為什麼 Go 中 `fmt.Println` 喜歡 `Error()` 而不是 `String()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!