Skip to content

Commit

Permalink
refactor: 不再依赖 exp/constraints
Browse files Browse the repository at this point in the history
  • Loading branch information
caixw committed Feb 23, 2023
1 parent d82261c commit f6a2069
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
10 changes: 4 additions & 6 deletions conv.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (
"reflect"
"strconv"
"strings"

"golang.org/x/exp/constraints"
)

// 抛出一个类型无法转换的错误
Expand Down Expand Up @@ -84,7 +82,7 @@ func MustBool(val any, def ...bool) bool {
}

// IntOf 转换成指定类型的符号整数
func IntOf[T constraints.Signed](val any) (T, error) {
func IntOf[T Signed](val any) (T, error) {
ret, err := toInt64(val)
if err != nil {
return 1, err
Expand All @@ -95,7 +93,7 @@ func IntOf[T constraints.Signed](val any) (T, error) {
// UintOf 转换成指定类型的无符号整数
//
// 将一个有符号整数转换成无符号整数,负数将返回错误,正数和零正常转换
func UintOf[T constraints.Unsigned](val any) (T, error) {
func UintOf[T Unsigned](val any) (T, error) {
ret, err := toUint64(val)
if err != nil {
return 0, err
Expand Down Expand Up @@ -492,15 +490,15 @@ func toUint64(val any) (uint64, error) {
}

// MustIntOf 将 val 转换成 T 类型或是在无法转换的情况下返回 def 参数
func MustIntOf[T constraints.Signed](val any, def ...T) T {
func MustIntOf[T Signed](val any, def ...T) T {
if ret, err := IntOf[T](val); err == nil {
return ret
}
return def[0]
}

// MustUintOf 将 val 转换成 T 类型或是在无法转换的情况下返回 def 参数
func MustUintOf[T constraints.Unsigned](val any, def ...T) T {
func MustUintOf[T Unsigned](val any, def ...T) T {
if ret, err := UintOf[T](val); err == nil {
return ret
}
Expand Down
2 changes: 0 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,4 @@ module github.com/issue9/conv

require github.com/issue9/assert/v3 v3.0.4

require golang.org/x/exp v0.0.0-20230212135524-a684f29349b6

go 1.18
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
github.com/issue9/assert/v3 v3.0.4 h1:WsYZQ6PQmM/pGFrbkn5GIXjWeVZHv+wcl2829UTX1Qc=
github.com/issue9/assert/v3 v3.0.4/go.mod h1:yft/uaskRpwQTyBT3n1zRl91SR1wNlO4fLZHzOa4bdM=
golang.org/x/exp v0.0.0-20230212135524-a684f29349b6 h1:Ic9KukPQ7PegFzHckNiMTQXGgEszA7mY2Fn4ZMtnMbw=
golang.org/x/exp v0.0.0-20230212135524-a684f29349b6/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
11 changes: 11 additions & 0 deletions types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: MIT

package conv

type Signed interface {
~int | ~int8 | ~int16 | ~int32 | ~int64
}

type Unsigned interface {
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
}

0 comments on commit f6a2069

Please sign in to comment.