Source File
errors.go
Belonging Package
fmt
// 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.
// If there is more than one %w verb, the returned error will implement an
// Unwrap method returning a []error containing all the %w operands in the
// order they appear in the arguments.
// It is invalid to supply the %w verb with an operand that does not implement
// the error interface. The %w verb is otherwise a synonym for %v.
func ( string, ...any) error {
:= newPrinter()
.wrapErrs = true
.doPrintf(, )
:= string(.buf)
var error
switch len(.wrappedErrs) {
case 0:
= errors.New()
case 1:
:= &wrapError{msg: }
.err, _ = [.wrappedErrs[0]].(error)
=
default:
if .reordered {
slices.Sort(.wrappedErrs)
}
var []error
for , := range .wrappedErrs {
if > 0 && .wrappedErrs[-1] == {
continue
}
if , := [].(error); {
= append(, )
}
}
= &wrapErrors{, }
}
.free()
return
}
type wrapError struct {
msg string
err error
}
func ( *wrapError) () string {
return .msg
}
func ( *wrapError) () error {
return .err
}
type wrapErrors struct {
msg string
errs []error
}
func ( *wrapErrors) () string {
return .msg
}
func ( *wrapErrors) () []error {
return .errs
}
The pages are generated with Golds v0.7.0-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |