// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.
typeerrorinterface{Error()string}
packageerrors// New returns an error that formats as the given text.
funcNew(textstring)error{return&errorString{text}}// errorString is a trivial implementation of error.
typeerrorStringstruct{sstring}func(e*errorString)Error()string{returne.s}
// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
funcErrorf(formatstring,a...interface{})error{returnerrors.New(Sprintf(format,a...))}
// The panic built-in function stops normal execution of the current
// goroutine. When a function F calls panic, normal execution of F stops
// immediately. Any functions whose execution was deferred by F are run in
// the usual way, and then F returns to its caller. To the caller G, the
// invocation of F then behaves like a call to panic, terminating G's
// execution and running any deferred functions. This continues until all
// functions in the executing goroutine have stopped, in reverse order. At
// that point, the program is terminated and the error condition is reported,
// including the value of the argument to panic. This termination sequence
// is called panicking and can be controlled by the built-in function
// recover.
funcpanic(vinterface{})
// The recover built-in function allows a program to manage behavior of a
// panicking goroutine. Executing a call to recover inside a deferred
// function (but not any function called by it) stops the panicking sequence
// by restoring normal execution and retrieves the error value passed to the
// call of panic. If recover is called outside the deferred function it will
// not stop a panicking sequence. In this case, or when the goroutine is not
// panicking, or if the argument supplied to panic was nil, recover returns
// nil. Thus the return value from recover reports whether the goroutine is
// panicking.
funcrecover()interface{}