我们生成的网页应始终以横向模式打印.Web浏览器打印对话框默认为纵向,因此对于每个打印作业,用户都必须手动选择横向.它很小,但如果我们可以删除这个不必要的步骤,对用户会很好.
提前感谢所有受访者.
type MyError struct {
errors []string
}
func (t *MyError) Error() string {
if t == nil {
fmt.Println("t ptr empty")
return ""
}
pointers := make([]string, 0, len(t.errors))
for i, r := range t.errors {
pointers[i] = r
}
sort.Strings(pointers)
return fmt.Sprintf("n error(s) decoding:\n\n%s", len(t.errors), strings.Join(pointers, ","))
}
func main() {
var err *MyError
err.Error() // expected "panic: runtime error: invalid memory address or nil pointer dereference" here
}
Run Code Online (Sandbox Code Playgroud)
变量err为nil,因此调用err.Error()方法可能会引起严重的“运行时错误:无效的内存地址或nil指针取消引用”,但是该方法调用成功。为什么不慌呢?