1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-04 12:52:28 +08:00

error: Add unwrap (#24)

Add a unwrap func helper

* Unwrap if err is nil then it returns a valid value otherwise it panics
This commit is contained in:
donutloop
2022-01-22 14:25:31 +01:00
committed by GitHub
parent 3f8effb7a3
commit 2878d389c8
4 changed files with 90 additions and 0 deletions

View File

@@ -588,3 +588,29 @@ func IsIpV6(ipstr string) bool //check if the string is a ipv6 address
func IsStrongPassword(password string, length int) bool //check if the string is strong password (alpha(lower+upper) + number + special chars(!@#$%^&*()?><))
func IsWeakPassword(password string) bool //check if the string is weak passwordonly letter or only number or letter + number
```
### 14. error helpers
- Contain functions to handle errors
- Usage: import "github.com/duke-git/lancet/xerror"
```go
package main
import (
"fmt"
"io/ioutil"
"log"
"github.com/duke-git/lancet/errors"
)
func main() {
x := Unwrap(strconv.Atoi("42")) // Unwrap if err is nil then it returns a valid value otherwise it panics
}
```
- Function list:
```go
Unwrap[T any](val T, err error)
```

View File

@@ -589,3 +589,29 @@ func IsIpV6(ipstr string) bool //判断字符串是否是ipv6
func IsStrongPassword(password string, length int) bool //判断字符串是否是强密码(大小写字母+数字+特殊字符)
func IsWeakPassword(password string) bool //判断字符串是否是弱密码(只有字母或数字)
```
### 14. error helpers
- Contain functions to handle errors
- Usage: import "github.com/duke-git/lancet/xerror"
```go
package main
import (
"fmt"
"io/ioutil"
"log"
"github.com/duke-git/lancet/errors"
)
func main() {
x := Unwrap(strconv.Atoi("42"))
}
```
- Function list:
```go
Unwrap[T any](val T, err error)
```

14
xerror/xerror.go Normal file
View File

@@ -0,0 +1,14 @@
// Copyright 2021 dudaodong@gmail.com. All rights reserved.
// Use of this source code is governed by MIT license
// Package xerror implements helpers for errors
package xerror
// Unwrap if err is nil then it returns a valid value
// If err is not nil, Unwrap panics with err.
func Unwrap[T any](val T, err error) T {
if err != nil {
panic(err)
}
return val
}

24
xerror/xerror_test.go Normal file
View File

@@ -0,0 +1,24 @@
package xerror
import (
"github.com/duke-git/lancet/internal"
"strconv"
"testing"
)
func TestUnwrap(t *testing.T) {
assert := internal.NewAssert(t, "TestUnwrap")
assert.Equal(42, Unwrap(strconv.Atoi("42")))
}
func TestUnwrapFail(t *testing.T) {
assert := internal.NewAssert(t, "TestUnwrapFail")
_, err := strconv.Atoi("4o2")
defer func() {
v := recover()
assert.Equal(err.Error(), v.(*strconv.NumError).Error())
}()
Unwrap(strconv.Atoi("4o2"))
}