// 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 fmtimport ()// 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) {// This function has been split in a somewhat unnatural way // so that both it and the errors.New call can be inlined.if = errorf(, ...); != nil {return }// No formatting was needed. We can avoid some allocations and other work. // See https://go.dev/cl/708836 for details.returnerrors.New()}// errorf formats and returns an error value, or nil if no formatting is required.func errorf( string, ...any) error {iflen() == 0 && stringslite.IndexByte(, '%') == -1 {returnnil } := newPrinter() .wrapErrs = true .doPrintf(, ) := string(.buf)varerrorswitchlen(.wrappedErrs) {case0: = errors.New()case1: := &wrapError{msg: } .err, _ = [.wrappedErrs[0]].(error) = default:if .reordered {slices.Sort(.wrappedErrs) }var []errorfor , := 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 Goldsv0.8.3-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.