go errors 源码

2022-07-15 浏览 (792)

golang errors 代码

文件路径:/src/fmt/errors.go

/ 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 "errors"

/ 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 Errorf(format string, a ...any) error {
	p := newPrinter()
	p.wrapErrs = true
	p.doPrintf(format, a)
	s := string(p.buf)
	var err error
	if p.wrappedErr == nil {
		err = errors.New(s)
	} else {
		err = &wrapError{s, p.wrappedErr}
	}
	p.free()
	return err
}

type wrapError struct {
	msg string
	err error
}

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

func (e *wrapError) Unwrap() error {
	return e.err
}

相关信息

go 源码目录

相关文章

go doc 源码

go errors_test 源码

go example_test 源码

go export_test 源码

go fmt_test 源码

go format 源码

go gostringer_example_test 源码

go print 源码

go scan 源码

go scan_test 源码

^