这种字符串格式化工作正常:
err := foo()
if err != nil {
fmt.Printf("foo returned '%s' when called\n", err)
}
在此上下文中调用err.Error()
是否有任何优点?
fmt.Printf("foo returned '%s" when called\n", err.Error())
答案 0 :(得分:3)
两个版本都完全正常。
fmt软件包对错误界面有特殊支持(从this link向下滚动几个屏幕):
- 如果操作数实现了错误接口,则将调用Error方法将对象转换为字符串,然后根据动词的需要对其进行格式化(如果有的话)。
醇>
您的第二个版本可能会运行得更快,因为它可以避免fmt软件包执行的大多数特殊断言,但在大多数情况下差异不应该明显。
一般来说,你应该更喜欢第一个版本,它更易读,特别是有更多的参数。
答案 1 :(得分:1)
如果from django.contrib.admin import AdminSite
AdminSite.site_title = ugettext_lazy('My Admin')
AdminSite.site_header = ugettext_lazy('My Administration')
AdminSite.index_title = ugettext_lazy('DATA BASE ADMINISTRATION')
实现err
接口,则在使用有效格式动词(如Error
)时将隐式调用Error()方法。 fmt的文档有更多内容。