The Go gods have published a "draft design" for error handling in Go 2. It aims to change the errors idiom:
Overview and Design
They want feedback from users!
Feedback wiki
Briefly, it looks like:
func f() error {
handle err { fmt.Println(err); return err }
check mayFail()
check canFail()
}
UPDATE: The draft design has received a lot of criticism, so I drafted Requirements to Consider for Go 2 Error Handling with a menu of possibilities for an eventual solution.