1// Copyright 2012 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package xerrors_test 6 7import ( 8 "fmt" 9 "time" 10) 11 12// MyError is an error implementation that includes a time and message. 13type MyError struct { 14 When time.Time 15 What string 16} 17 18func (e MyError) Error() string { 19 return fmt.Sprintf("%v: %v", e.When, e.What) 20} 21 22func oops() error { 23 return MyError{ 24 time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), 25 "the file system has gone away", 26 } 27} 28 29func Example() { 30 if err := oops(); err != nil { 31 fmt.Println(err) 32 } 33 // Output: 1989-03-15 22:30:00 +0000 UTC: the file system has gone away 34} 35