fmt.Errorf使用with%w和 using包装错误之间似乎存在不一致errors.Wrap:
e1 := errors.New("error1")
efmt := fmt.Errorf("error2: %w", e1)
eerr := errors.Wrap(e1, "error2")
fmt.Println(errors.Unwrap(efmt)) // error1
fmt.Println(errors.Unwrap(efmt) == e1) // true
fmt.Println(errors.Unwrap(eerr)) // error2: error1
fmt.Println(errors.Unwrap(eerr) == e1) // false :-(
此处提供了完整示例
我不确定这是否是有意的,但这似乎不一致......有什么理由吗?这在任何地方都有记录吗?
繁华开满天机
相关分类