提交 c7775260 authored 作者: mooncake9527's avatar mooncake9527

sliceUtils

上级 a414c378
......@@ -13,7 +13,7 @@ import (
"gitlab.wanzhuangkj.com/tush/xpkg/encoding"
ctxUtil "gitlab.wanzhuangkj.com/tush/xpkg/gin/ctxUtils"
"gitlab.wanzhuangkj.com/tush/xpkg/logger"
xslice "gitlab.wanzhuangkj.com/tush/xpkg/utils/xslice"
xslice "gitlab.wanzhuangkj.com/tush/xpkg/utils/sliceUtils"
"gitlab.wanzhuangkj.com/tush/xpkg/xerrors/xerror"
)
......
package xfile
package fileUtils
const (
prefix = "prefix"
......
package xset
package setUtils
import (
"gitlab.wanzhuangkj.com/tush/xpkg/xtype"
......@@ -35,7 +35,7 @@ func (s *Set[T]) Size() int {
return len(s.m)
}
func (s *Set[T]) ToList() []T {
func (s *Set[T]) Slice() []T {
var list []T
for k := range s.m {
if v, ok := k.(T); ok {
......
package xslice
package sliceUtils
import (
"fmt"
"gitlab.wanzhuangkj.com/tush/xpkg/errcode"
"gitlab.wanzhuangkj.com/tush/xpkg/utils/setUtils"
"gitlab.wanzhuangkj.com/tush/xpkg/xtype"
"strings"
"github.com/jinzhu/copier"
"github.com/spf13/cast"
"gitlab.wanzhuangkj.com/tush/xpkg/xerrors/xerror"
"gitlab.wanzhuangkj.com/tush/xpkg/xset"
)
// connector 连接符
......@@ -66,11 +66,11 @@ func GetIDs[ID xtype.Key, T IID[ID]](rs []*T) []ID {
if len(rs) == 0 {
return nil
}
set := xset.NewSet[ID]()
set := setUtils.NewSet[ID]()
for _, r := range rs {
set.Add((*r).GetID())
}
return set.ToList()
return set.Slice()
}
func SliceToIDMap[ID xtype.Key, T IID[ID]](rs []*T) map[ID]*T {
......@@ -172,11 +172,11 @@ func StrMapToSlice[T any](m map[string]*T) []*T {
}
func GetStrMapIDs[ID xtype.Key, T IID[ID]](m map[string]*T) []ID {
st := xset.NewSet[ID]()
st := setUtils.NewSet[ID]()
for _, v := range m {
st.Add((*v).GetID())
}
return st.ToList()
return st.Slice()
}
func IDMapToSlice[ID xtype.Key, T any](m map[ID]*T) []*T {
......@@ -188,11 +188,11 @@ func IDMapToSlice[ID xtype.Key, T any](m map[ID]*T) []*T {
}
func GetIDMapIDs[ID xtype.Key, T IID[ID]](m map[ID]*T) []ID {
st := xset.NewSet[ID]()
st := setUtils.NewSet[ID]()
for _, v := range m {
st.Add((*v).GetID())
}
return st.ToList()
return st.Slice()
}
func StrMapSliceToSlice[T any](m map[string][]*T) []*T {
......@@ -204,13 +204,13 @@ func StrMapSliceToSlice[T any](m map[string][]*T) []*T {
}
func GetStrMapSliceIDs[ID xtype.Key, T IID[ID]](m map[string][]*T) []ID {
st := xset.NewSet[ID]()
st := setUtils.NewSet[ID]()
for _, rs := range m {
for _, r := range rs {
st.Add((*r).GetID())
}
}
return st.ToList()
return st.Slice()
}
func IDMapSliceToSlice[ID xtype.Key, T any](m map[ID][]*T) []*T {
......@@ -222,13 +222,13 @@ func IDMapSliceToSlice[ID xtype.Key, T any](m map[ID][]*T) []*T {
}
func GetIDMapSliceIDs[ID xtype.Key, T IID[ID]](m map[ID][]*T) []ID {
st := xset.NewSet[ID]()
st := setUtils.NewSet[ID]()
for _, rs := range m {
for _, r := range rs {
st.Add((*r).GetID())
}
}
return st.ToList()
return st.Slice()
}
func CompareSlice[ID xtype.Key, T IIDTable[ID], BizSlice ~[]*T](ids []ID, bizSlice BizSlice, errCode *errcode.Error) error {
......@@ -270,11 +270,11 @@ func ArrayUnique[T comparable](array []T) []T {
// if len(rs) == 0 {
// return nil
// }
// set := xset.NewSet[id]()
// set := setUtils.NewSet[id]()
// for _, r := range rs {
// set.Add((*r).GetID())
// }
// return set.ToList()
// return set.Slice()
//}
//
//func SliceToIdMap[id xtype.Key, T IId[id]](rs []*T) map[id]*T {
......@@ -284,3 +284,30 @@ func ArrayUnique[T comparable](array []T) []T {
// }
// return m
//}
func ChunkSlice[T any](slice []T, chunkSize int) [][]T {
var chunks [][]T
for i := 0; i < len(slice); i += chunkSize {
end := i + chunkSize
if end > len(slice) {
end = len(slice)
}
chunks = append(chunks, slice[i:end])
}
return chunks
}
type IJoin interface {
String() string
}
func JoinStrs[T IJoin](rs []T, connector string) string {
if len(rs) == 0 {
return ""
}
strs := make([]string, 0, len(rs))
for _, r := range rs {
strs = append(strs, r.String())
}
return strings.Join(strs, connector)
}
package xjson
import (
"encoding/json"
"gitlab.wanzhuangkj.com/tush/xpkg/xerrors/xerror"
)
func ToJsonString(v any) string {
return string(ToJsonBytes(v))
}
func ToJsonBytes(v any) []byte {
if v == nil {
return []byte{}
}
bytes, _ := json.Marshal(v)
return bytes
}
func Unmarshal(data []byte, v any) error {
err := json.Unmarshal(data, v)
if err != nil {
return xerror.New(err.Error())
}
return nil
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论