Copyright 2018 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

package fmt

import 
Errorf formats according to a format specifier and returns the string as a value that satisfies error. If the format specifier includes a %w verb with an error operand, the returned error will implement an Unwrap method returning the operand. It is invalid to include more than one %w verb or to supply it with an operand that does not implement the error interface. The %w verb is otherwise a synonym for %v.
func ( string,  ...interface{}) error {
	 := newPrinter()
	.wrapErrs = true
	.doPrintf(, )
	 := string(.buf)
	var  error
	if .wrappedErr == nil {
		 = errors.New()
	} else {
		 = &wrapError{, .wrappedErr}
	}
	.free()
	return 
}

type wrapError struct {
	msg string
	err error
}

func ( *wrapError) () string {
	return .msg
}

func ( *wrapError) () error {
	return .err