tools

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2025 License: Apache-2.0 Imports: 22 Imported by: 2

Documentation

Index

Constants

View Source
const (
	TimeTruncater     = time.Millisecond
	DefaultTimeFormat = "2006-01-02 15:04:05 MST"
	TimeFormatWithMS  = "2006-01-02 15:04:05.000 MST"
)

Variables

View Source
var (
	ErrNilSource = errors.New("tools: nil source value")
	ErrNilValue  = errors.New("tools: nil value")
)
View Source
var (
	ByteSliceType   = reflect.TypeOf([]byte{})
	StringType      = reflect.TypeOf("")
	StringSliceType = reflect.TypeOf([]string{})
	Int64Type       = reflect.TypeOf(int64(0))
	Int64SliceType  = reflect.TypeOf([]int64{})
)

Functions

func Abs added in v0.1.1

func Abs[I ~int | ~int8 | ~int16 | ~int32 | ~int64](i I) I

func CopySlice

func CopySlice[T any](src []T) []T

func IF added in v0.0.2

func IF[T any](condition bool, trueValue T, falseValue T) T

func IndirectType added in v0.1.1

func IndirectType(typ reflect.Type) reflect.Type

func IndirectValue added in v0.1.1

func IndirectValue(val reflect.Value) reflect.Value

func IsByteSlice added in v0.1.0

func IsByteSlice(typ reflect.Type) bool

func IsDefaultZero added in v0.1.0

func IsDefaultZero[T any](t T) bool

func JsonPrettyString added in v0.0.5

func JsonPrettyString(m any) (string, error)

func JsonString

func JsonString(m any) (string, error)

func MustJsonPrettyString added in v0.0.5

func MustJsonPrettyString(m any) string

func MustJsonString added in v0.0.5

func MustJsonString(m any) string

func NewIDValuer added in v0.1.1

func NewIDValuer(ids ...int64) []driver.Valuer

func SetByteSliceValue added in v0.1.0

func SetByteSliceValue(val reflect.Value, bs []byte) error

func SplitNetAddr added in v0.1.1

func SplitNetAddr(addr string) (host string, port int)

SplitNetAddr like host:port to host and port if there's no valid host exists, return "" if there's no valid port exists, return -1

func SsToTs

func SsToTs[S, T any](transmitter func(S) T, ss ...S) []T

func TsToSs

func TsToSs[T, S any](transmitter func(T) (S, bool), ts ...T) []S

func ValidAndCreateDir added in v0.1.1

func ValidAndCreateDir(pstr string, checkAndCreateIfAbsent bool) (string, error)

ValidAndCreateDir 将传入的绝对路径pstr当作文件目录,确认其存在,如果不存在则创建。并返回包含最后的路径分隔符的绝对路径字符串

func VariadicParam added in v0.1.1

func VariadicParam[T any](params []T, defaultValue ...T) T

Types

type B added in v0.0.7

type B byte

B for byte

func (B) PopCount added in v0.0.7

func (b B) PopCount() int

type Bs added in v0.0.7

type Bs []byte

func (Bs) PopCount added in v0.0.7

func (bs Bs) PopCount() int

type F added in v0.0.7

type F float64

F for float64

func (F) ID added in v0.0.7

func (f F) ID() (i ID, overflow bool)

func (F) Int added in v0.0.7

func (f F) Int() (i int64, flowed bool)

func (F) MustID added in v0.0.7

func (f F) MustID() ID

func (F) MustInt added in v0.0.7

func (f F) MustInt() int64

type ID added in v0.0.7

type ID int64

func (ID) Decr added in v0.0.7

func (id ID) Decr() int64

func (ID) FullBytes added in v0.0.7

func (id ID) FullBytes() []byte

func (ID) Incr added in v0.0.7

func (id ID) Incr() int64

func (ID) Int added in v0.0.7

func (id ID) Int() int64

func (ID) IsValid added in v0.0.7

func (id ID) IsValid() bool

func (ID) PadZeros added in v0.0.7

func (id ID) PadZeros() string

func (ID) String added in v0.0.7

func (id ID) String() string

type JSON

type JSON json.RawMessage

func (*JSON) Bytes

func (j *JSON) Bytes() []byte

func (*JSON) Clone

func (j *JSON) Clone() JSON

func (*JSON) Equal

func (j *JSON) Equal(o *JSON) bool

func (JSON) Format

func (j JSON) Format(f fmt.State, c rune)

func (JSON) IsNull

func (j JSON) IsNull() bool

func (JSON) MarshalJSON

func (j JSON) MarshalJSON() ([]byte, error)

func (*JSON) Scan

func (j *JSON) Scan(value interface{}) error

func (*JSON) String

func (j *JSON) String() string

func (*JSON) UnmarshalJSON

func (j *JSON) UnmarshalJSON(data []byte) error

func (JSON) Value

func (j JSON) Value() (driver.Value, error)

type JSONArray added in v0.0.6

type JSONArray[T comparable] []T

func NewJSONArray added in v0.0.6

func NewJSONArray[T comparable](data JSON) (ja JSONArray[T], err error)

func (JSONArray[T]) Equal added in v0.0.6

func (ja JSONArray[T]) Equal(jt JSONArray[T]) bool

func (JSONArray[T]) Index added in v0.0.6

func (ja JSONArray[T]) Index(v T) int

func (JSONArray[T]) MarshalJSON added in v0.0.6

func (ja JSONArray[T]) MarshalJSON() ([]byte, error)

func (JSONArray[T]) ToArray added in v0.0.6

func (ja JSONArray[T]) ToArray() []T

func (JSONArray[T]) ToJSON added in v0.0.6

func (ja JSONArray[T]) ToJSON() (JSON, error)

func (JSONArray[T]) ToNotNullJSON added in v0.0.6

func (ja JSONArray[T]) ToNotNullJSON() (NotNullJSON, error)

type JSONBuilder

type JSONBuilder struct{}

func (JSONBuilder) FromObj

func (b JSONBuilder) FromObj(obj any) (JSON, error)

func (JSONBuilder) FromString

func (b JSONBuilder) FromString(jsonStr string) (JSON, error)

func (JSONBuilder) NoErrObj

func (b JSONBuilder) NoErrObj(obj any) JSON

func (JSONBuilder) NoErrString

func (b JSONBuilder) NoErrString(jsonStr string) JSON

type KKMap

type KKMap[K1 comparable, K2 comparable, V any] map[K1]map[K2]V

func (KKMap[K1, K2, V]) Delete

func (kkm KKMap[K1, K2, V]) Delete(k1 K1, k2 K2)

func (KKMap[K1, K2, V]) DeleteKey

func (kkm KKMap[K1, K2, V]) DeleteKey(k1 K1)

func (KKMap[K1, K2, V]) Get

func (kkm KKMap[K1, K2, V]) Get(k1 K1, k2 K2) (v V, exist bool)

func (KKMap[K1, K2, V]) IsExist added in v0.0.4

func (kkm KKMap[K1, K2, V]) IsExist(k1 K1, k2 K2) (exist bool)

func (KKMap[K1, K2, V]) IsExistKey added in v0.0.5

func (kkm KKMap[K1, K2, V]) IsExistKey(k1 K1) (exist bool)

func (KKMap[K1, K2, V]) Put

func (kkm KKMap[K1, K2, V]) Put(k1 K1, k2 K2, v V) KKMap[K1, K2, V]

func (KKMap[K1, K2, V]) PutKey added in v0.0.4

func (kkm KKMap[K1, K2, V]) PutKey(k1 K1, km2 map[K2]V) KKMap[K1, K2, V]

func (KKMap[K1, K2, V]) Range added in v0.0.3

func (kkm KKMap[K1, K2, V]) Range(handler func(k1 K1, k2 K2, v V) (goon bool))

type KMap

type KMap[K comparable, V any] map[K]V

func (KMap[K, V]) Delete

func (km KMap[K, V]) Delete(ks ...K)

func (KMap[K, V]) ExistingList added in v0.0.5

func (km KMap[K, V]) ExistingList(keys ...K) []V

func (KMap[K, V]) Get

func (km KMap[K, V]) Get(k K) (v V, exist bool)

func (KMap[K, V]) IsExist

func (km KMap[K, V]) IsExist(key K) bool

func (KMap[K, V]) Keys

func (km KMap[K, V]) Keys(filters ...func(k K, v V) bool) []K

func (KMap[K, V]) List

func (km KMap[K, V]) List(keys ...K) []V

func (KMap[K, V]) Map

func (km KMap[K, V]) Map() map[K]V

func (KMap[K, V]) Merge

func (km KMap[K, V]) Merge(kmo KMap[K, V]) KMap[K, V]

func (KMap[K, V]) Put

func (km KMap[K, V]) Put(key K, value V) KMap[K, V]

func (KMap[K, V]) Puts added in v0.1.1

func (km KMap[K, V]) Puts(it iter.Seq2[K, V]) KMap[K, V]

func (KMap[K, V]) SubMap added in v0.0.4

func (km KMap[K, V]) SubMap(ks ...K) KMap[K, V]

SubMap generate a new map with all keys from ks, even if there's no corresponding value in km.

func (KMap[K, V]) Values

func (km KMap[K, V]) Values(filters ...func(k K, v V) bool) []V

func (KMap[K, V]) ValuesSeq added in v0.1.1

func (km KMap[K, V]) ValuesSeq(filters ...func(k K, v V) bool) iter.Seq[V]

type KS

type KS[K comparable] []K

func (KS[K]) All added in v0.1.1

func (ks KS[K]) All() iter.Seq[K]

func (KS[K]) Append added in v0.0.5

func (ks KS[K]) Append(k K) KS[K]

func (KS[K]) Clone

func (ks KS[K]) Clone() KS[K]

func (KS[K]) Contains

func (ks KS[K]) Contains(tgt K) bool

func (KS[K]) Dedup

func (ks KS[K]) Dedup(validators ...func(k K) bool) KS[K]

func (KS[K]) DedupRange

func (ks KS[K]) DedupRange(one func(k K) error) error

func (KS[K]) Equal added in v0.0.5

func (ks KS[K]) Equal(os KS[K]) bool

func (KS[K]) IterateRemove

func (ks KS[K]) IterateRemove(tgt K) KS[K]

func (KS[K]) Map

func (ks KS[K]) Map(validators ...func(k K) bool) KSet[K]

func (KS[K]) Remove

func (ks KS[K]) Remove(tgts ...K) KS[K]

func (KS[K]) Slice

func (ks KS[K]) Slice() []K

func (KS[K]) Sub added in v0.0.5

func (ks KS[K]) Sub(offset, limit int) KS[K]

type KSet

type KSet[K comparable] map[K]struct{}

func (KSet[K]) Add

func (km KSet[K]) Add(ks ...K) KSet[K]

func (KSet[K]) Append

func (km KSet[K]) Append(ks ...K) KSet[K]

func (KSet[K]) AppendSet

func (km KSet[K]) AppendSet(s KSet[K]) KSet[K]

func (KSet[K]) Appends added in v0.1.1

func (km KSet[K]) Appends(it iter.Seq[K]) KSet[K]

func (KSet[K]) CAS

func (km KSet[K]) CAS(k K) (set KSet[K], changed bool)

func (KSet[K]) Clone

func (km KSet[K]) Clone() KSet[K]

func (KSet[K]) Delete

func (km KSet[K]) Delete(ks ...K) KSet[K]

func (KSet[K]) Equal

func (km KSet[K]) Equal(o KSet[K]) bool

func (KSet[K]) ExsitingList added in v0.0.5

func (km KSet[K]) ExsitingList(ks ...K) []K

func (KSet[K]) IsExist

func (km KSet[K]) IsExist(k K) bool

func (KSet[K]) Slice

func (km KSet[K]) Slice(emptyNil ...bool) []K

type KV

type KV[K comparable, V any] struct{}

func (KV[K, V]) KeyNotInMap

func (KV[K, V]) KeyNotInMap(m map[K]V, ks ...K) []K

func (KV[K, V]) List

func (KV[K, V]) List(keys []K, valuesMap map[K]V) []V

func (KV[K, V]) MapKeys

func (KV[K, V]) MapKeys(m map[K]V) []K

func (KV[K, V]) MapValues

func (KV[K, V]) MapValues(m map[K]V) []V

func (KV[K, V]) OneOfMap

func (KV[K, V]) OneOfMap(k K, mapper func([]K) (map[K]V, error)) (v V, err error)

func (KV[K, V]) PutToMap

func (KV[K, V]) PutToMap(m map[K]V, k K, v V) map[K]V

func (KV[K, V]) RangeByK

func (KV[K, V]) RangeByK(ks []K, m map[K]V, dowork func(k K, v V) error) error

type NotNullJSON

type NotNullJSON JSON

func (*NotNullJSON) Bytes

func (n *NotNullJSON) Bytes() []byte

func (*NotNullJSON) Clone

func (n *NotNullJSON) Clone() NotNullJSON

func (*NotNullJSON) Equal

func (n *NotNullJSON) Equal(o *NotNullJSON) bool

func (NotNullJSON) IsNull

func (n NotNullJSON) IsNull() bool

func (NotNullJSON) MarshalJSON

func (n NotNullJSON) MarshalJSON() ([]byte, error)

func (*NotNullJSON) Scan

func (n *NotNullJSON) Scan(value interface{}) error

func (*NotNullJSON) String

func (n *NotNullJSON) String() string

func (NotNullJSON) ToJSON added in v0.0.5

func (n NotNullJSON) ToJSON() JSON

func (*NotNullJSON) UnmarshalJSON

func (n *NotNullJSON) UnmarshalJSON(data []byte) error

func (NotNullJSON) Value

func (n NotNullJSON) Value() (driver.Value, error)

type NullInt32 added in v0.1.1

type NullInt32 sql.NullInt32

func LE0NullInt32 added in v0.1.1

func LE0NullInt32(i int32) NullInt32

LE0NullInt32 Less or Equal 0 is Null, or not Null

func (NullInt32) Int added in v0.1.1

func (i NullInt32) Int() int32

func (NullInt32) IsAvailable added in v0.1.1

func (i NullInt32) IsAvailable() bool

func (NullInt32) IsNull added in v0.1.1

func (i NullInt32) IsNull() bool

func (NullInt32) MarshalJSON added in v0.1.1

func (i NullInt32) MarshalJSON() ([]byte, error)

func (*NullInt32) Scan added in v0.1.1

func (i *NullInt32) Scan(value any) error

func (NullInt32) String added in v0.1.1

func (i NullInt32) String() string

func (*NullInt32) UnmarshalJSON added in v0.1.1

func (i *NullInt32) UnmarshalJSON(input []byte) error

func (NullInt32) Value added in v0.1.1

func (i NullInt32) Value() (driver.Value, error)

type NullInt64 added in v0.1.1

type NullInt64 sql.NullInt64

func LE0NullInt64 added in v0.1.1

func LE0NullInt64(i int64) NullInt64

LE0NullInt64 Less or Equal to 0 is Null, or not Null

func (*NullInt64) Clear added in v0.1.1

func (i *NullInt64) Clear()

func (NullInt64) Int added in v0.1.1

func (i NullInt64) Int() int64

func (NullInt64) IsAvailable added in v0.1.1

func (i NullInt64) IsAvailable() bool

func (NullInt64) IsNull added in v0.1.1

func (i NullInt64) IsNull() bool

func (NullInt64) MarshalJSON added in v0.1.1

func (i NullInt64) MarshalJSON() ([]byte, error)

func (*NullInt64) Scan added in v0.1.1

func (i *NullInt64) Scan(value any) error

func (*NullInt64) SetValue added in v0.1.1

func (i *NullInt64) SetValue(val int64)

func (NullInt64) String added in v0.1.1

func (i NullInt64) String() string

func (*NullInt64) UnmarshalJSON added in v0.1.1

func (i *NullInt64) UnmarshalJSON(input []byte) error

func (NullInt64) Value added in v0.1.1

func (i NullInt64) Value() (driver.Value, error)

type NullString added in v0.1.1

type NullString sql.Null[string]

func (NullString) IsNull added in v0.1.1

func (n NullString) IsNull() bool

func (NullString) MarshalJSON added in v0.1.1

func (n NullString) MarshalJSON() ([]byte, error)

func (*NullString) Scan added in v0.1.1

func (n *NullString) Scan(value any) error

func (NullString) String added in v0.1.1

func (n NullString) String() string

func (*NullString) UnmarshalJSON added in v0.1.1

func (n *NullString) UnmarshalJSON(data []byte) error

func (NullString) Value added in v0.1.1

func (n NullString) Value() (driver.Value, error)

type NullTime added in v0.1.1

type NullTime sql.NullTime

func NewNullTime added in v0.1.1

func NewNullTime(t ...time.Time) NullTime

func NewNullUnixTime added in v0.1.1

func NewNullUnixTime(ut int64) NullTime

func (NullTime) Compare added in v0.1.1

func (n NullTime) Compare(ti time.Time) int

func (NullTime) Equal added in v0.1.1

func (n NullTime) Equal(o NullTime) bool

func (NullTime) Format added in v0.1.1

func (n NullTime) Format(layout string) string

func (NullTime) IsNull added in v0.1.1

func (n NullTime) IsNull() bool

func (NullTime) MarshalJSON added in v0.1.1

func (n NullTime) MarshalJSON() ([]byte, error)

func (NullTime) Obj added in v0.1.1

func (n NullTime) Obj() time.Time

func (*NullTime) Scan added in v0.1.1

func (n *NullTime) Scan(value any) error

func (NullTime) String added in v0.1.1

func (n NullTime) String() string

func (NullTime) ToTime added in v0.1.1

func (n NullTime) ToTime() Time

func (*NullTime) UnmarshalJSON added in v0.1.1

func (n *NullTime) UnmarshalJSON(data []byte) error

func (NullTime) Value added in v0.1.1

func (n NullTime) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type S added in v0.1.0

type S string

func (S) Bytes added in v0.1.0

func (s S) Bytes() []byte

func (S) CSVLike added in v0.1.0

func (s S) CSVLike() string

func (S) CSVSplit added in v0.1.0

func (s S) CSVSplit() []string

func (S) CamelToSnake added in v0.1.0

func (s S) CamelToSnake() S

func (S) FirstByte added in v0.1.0

func (s S) FirstByte() byte

func (S) FirstRune added in v0.1.0

func (s S) FirstRune() rune

func (S) FirstRuneString added in v0.1.0

func (s S) FirstRuneString() S

func (S) Formalize added in v0.1.0

func (s S) Formalize() S

func (S) ID added in v0.1.0

func (s S) ID() (ID, error)

func (S) Includes added in v0.1.0

func (s S) Includes(ss ...string) bool

func (S) Int64 added in v0.1.0

func (s S) Int64() (int64, error)

func (S) IsValid added in v0.1.0

func (s S) IsValid() bool

func (S) JSON added in v0.1.0

func (s S) JSON() (JSON, error)

func (S) Like added in v0.1.0

func (s S) Like() string

func (S) MustID added in v0.1.0

func (s S) MustID() ID

func (S) RegexpSplit added in v0.1.0

func (s S) RegexpSplit(expr string) ([]string, error)

func (S) Replace added in v0.1.0

func (s S) Replace(source, target string) S

func (S) SplitBy added in v0.1.0

func (s S) SplitBy(sep string) []string

func (S) SplitLines added in v0.1.0

func (s S) SplitLines() (SS, error)

func (S) String added in v0.1.0

func (s S) String() string

func (S) ToLower added in v0.1.0

func (s S) ToLower() S

func (S) ToUpper added in v0.1.0

func (s S) ToUpper() S

func (S) Trim added in v0.1.0

func (s S) Trim() S

type SS

type SS []string

func (SS) Append

func (ss SS) Append(s ...string) SS

func (SS) Clone

func (ss SS) Clone() SS

func (SS) Dedup

func (ss SS) Dedup(transfers ...func(input string) (string, bool)) SS

func (SS) Has added in v0.0.5

func (ss SS) Has(s string) bool

func (SS) Join

func (ss SS) Join(sep string) string

Join strings seperated by sep, ignoreing empty strings

func (SS) Map

func (ss SS) Map() KSet[string]

func (SS) Matchs added in v0.0.5

func (ss SS) Matchs(str string) bool

Matchs if any s in ss contained by str

func (SS) Remove

func (ss SS) Remove(strs ...string) SS

func (SS) Slice

func (ss SS) Slice() []string

func (SS) Sort added in v0.0.5

func (ss SS) Sort() SS

type Time added in v0.1.0

type Time time.Time

Time mysql timestamp precision to seconds using Now(), NewTime(), NewUnixTime() or ZeroTime() to create Time which is without monotonic clock reading (by truncating millisecond)

func NewDate added in v0.1.0

func NewDate(year int, month time.Month, day, hour, min, sec int) Time

func NewFullDate added in v0.1.0

func NewFullDate(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) Time

func NewTime added in v0.1.0

func NewTime(t time.Time) Time

func NewUnixTime added in v0.1.0

func NewUnixTime(ts int64) Time

func Now added in v0.1.0

func Now() Time

func ZeroTime added in v0.1.0

func ZeroTime() Time

ZeroTime according to time.Time document, which is Jan 1 year 1.

func (Time) After added in v0.1.0

func (t Time) After(d time.Duration) Time

func (Time) Before added in v0.1.0

func (t Time) Before(d time.Duration) Time

func (Time) Compare added in v0.1.0

func (t Time) Compare(o Time) int

func (Time) CurrentHour added in v0.1.0

func (t Time) CurrentHour() Time

func (Time) CurrentRound added in v0.1.0

func (t Time) CurrentRound(interval time.Duration) Time

func (Time) DetailString added in v0.1.0

func (t Time) DetailString() string

func (Time) Equal added in v0.1.0

func (t Time) Equal(o Time) bool

func (Time) FromUnix added in v0.1.0

func (t Time) FromUnix(seconds int64) Time

func (Time) HourAfter added in v0.1.0

func (t Time) HourAfter(d time.Duration) Time

func (Time) IsZero added in v0.1.0

func (t Time) IsZero() bool

func (Time) MarshalJSON added in v0.1.0

func (t Time) MarshalJSON() ([]byte, error)

func (Time) NNUnixMilli added in v0.1.0

func (t Time) NNUnixMilli() int64

NNUnixMilli not negetive unix milli

func (Time) NextHour added in v0.1.0

func (t Time) NextHour() Time

func (Time) NextRound added in v0.1.0

func (t Time) NextRound(interval time.Duration) Time

func (*Time) Scan added in v0.1.0

func (t *Time) Scan(value any) error

func (Time) String added in v0.1.0

func (t Time) String() string

func (Time) Time added in v0.1.0

func (t Time) Time() time.Time

func (Time) UTCString added in v0.1.0

func (t Time) UTCString() string

func (Time) Unix added in v0.1.0

func (t Time) Unix() int64

func (Time) UnixMilli added in v0.1.0

func (t Time) UnixMilli() int64

func (Time) UnixMilliString added in v0.1.0

func (t Time) UnixMilliString() string

func (Time) UnixString added in v0.1.0

func (t Time) UnixString() string

func (*Time) UnmarshalJSON added in v0.1.0

func (t *Time) UnmarshalJSON(data []byte) error

func (Time) Value added in v0.1.0

func (t Time) Value() (driver.Value, error)

type Version added in v0.1.1

type Version int64

Version 使用64位有符号整数,分为3部分,major.minor.patch,每部分使用6位数,最大支持999,999 patch 使用十进制最低6位数 minor 使用十进制第12位到第7位数 major 使用十进制第18位到第13位数 符号为+时,为正式版,为-时,为alpha版,0.0.0没有alpha版

func NewVersion added in v0.1.1

func NewVersion(major, minor, patch uint64, alpha bool) (Version, error)

func ParseVersion added in v0.1.1

func ParseVersion(s string) (Version, error)

func (Version) Alpha added in v0.1.1

func (v Version) Alpha() Version

func (Version) Major added in v0.1.1

func (v Version) Major() uint64

func (Version) Minor added in v0.1.1

func (v Version) Minor() uint64

func (Version) Patch added in v0.1.1

func (v Version) Patch() uint64

func (Version) String added in v0.1.1

func (v Version) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL