diff --git a/README.md b/README.md index e897eb4..2b99cca 100644 --- a/README.md +++ b/README.md @@ -1144,7 +1144,10 @@ import "github.com/duke-git/lancet/v2/xerror" #### Function list: -- [Unwrap](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#Unwrap) +- **Unwrap** : check if err is nil then it returns a valid value. If err is not nil, Unwrap panics with err. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror.md#Unwrap)] + [[play](https://go.dev/play/p/w84d7Mb3Afk)] + ## How to Contribute diff --git a/README_zh-CN.md b/README_zh-CN.md index d0acabf..282ce40 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -1155,6 +1155,11 @@ import "github.com/duke-git/lancet/v2/xerror" #### 函数列表: + +- **Unwrap** : 检查error, 如果err为nil则展开,则它返回一个有效值,如果err不是nil则Unwrap使用err发生panic。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#Unwrap)] + [[play](https://go.dev/play/p/w84d7Mb3Afk)] + - [Unwrap](https://github.com/duke-git/lancet/blob/main/docs/xerror_zh-CN.md#Unwrap) ## 如何贡献代码 diff --git a/docs/xerror.md b/docs/xerror.md index 3e782cc..5de4ad8 100644 --- a/docs/xerror.md +++ b/docs/xerror.md @@ -46,12 +46,20 @@ import ( ) func main() { + result1 := xerror.Unwrap(strconv.Atoi("42")) + fmt.Println(result1) + _, err := strconv.Atoi("4o2") defer func() { v := recover() - fmt.Println(err.Error()) // err.Error() == v.(*strconv.NumError).Error() + result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) + fmt.Println(result2) }() xerror.Unwrap(strconv.Atoi("4o2")) + + // Output: + // 42 + // true } ``` diff --git a/docs/xerror_zh-CN.md b/docs/xerror_zh-CN.md index 75b5559..3489cb6 100644 --- a/docs/xerror_zh-CN.md +++ b/docs/xerror_zh-CN.md @@ -28,7 +28,7 @@ import ( ### Unwrap -
如果err为nil则展开,则它返回一个有效值。 如果err不是nil则Unwrap使用err发生恐慌。
+检查error, 如果err为nil则展开,则它返回一个有效值,如果err不是nil则Unwrap使用err发生panic。
函数签名: @@ -46,12 +46,20 @@ import ( ) func main() { + result1 := xerror.Unwrap(strconv.Atoi("42")) + fmt.Println(result1) + _, err := strconv.Atoi("4o2") defer func() { v := recover() - fmt.Println(err.Error()) // err.Error() == v.(*strconv.NumError).Error() + result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) + fmt.Println(result2) }() xerror.Unwrap(strconv.Atoi("4o2")) + + // Output: + // 42 + // true } ``` diff --git a/xerror/xerror.go b/xerror/xerror.go index f98914a..41e5171 100644 --- a/xerror/xerror.go +++ b/xerror/xerror.go @@ -6,6 +6,7 @@ package xerror // Unwrap if err is nil then it returns a valid value // If err is not nil, Unwrap panics with err. +// Play: https://go.dev/play/p/w84d7Mb3Afk func Unwrap[T any](val T, err error) T { if err != nil { panic(err)