mingo

package module
v0.13.2 Latest Latest
Warning

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

Go to latest
Published: Jul 11, 2025 License: MIT Imports: 19 Imported by: 0

README

go 服务工具

功能

  • Router 服务分发器
  • Bus 事件总线
  • Helper 数据处理助手
  • Delay 基于 redis 的延迟队列
  • RedisMq 基于 redis stream 的事件总线

安装

go get gitee.com/liangguoming/mingo

使用

参考 wiki页面

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clamp

func Clamp[T Number](value T, min T, max T) T

限制数字在指定范围

func Filter

func Filter[T any](list []T, match func(item *T) bool) []T

筛选 slice

func Find

func Find[T any](list []T, match func(item *T) bool) (*T, int)

查找 slice 某项 @return 1:Item pointer,nil will be not find @return 2:item index,-1 will be not find

func First

func First[T any](list []T) *T

获取 slice 第一项

func Floor

func Floor(value float64, len int) float64

向下取整到某位小数点

func ForEach added in v0.11.0

func ForEach[T any, V any](list []T, getValue func(item *T) V) []V

遍历 slice 并重新组织结构

func GetLocalIp added in v0.12.8

func GetLocalIp() (string, error)

func Includes

func Includes[T any](list []T, match func(item *T) bool) bool

判断 slice 是否含有某项

func Intersection added in v0.2.0

func Intersection[T any](listA []T, listB []T, compare func(a *T, b *T) bool) []T

获取 slice 交集

func Join added in v0.3.1

func Join(list []string, separator string) string

func Last

func Last[T any](list []T) *T

获取 slice 最后一项

func Listify

func Listify[T, V any](obj map[string]T, toValue func(key string, value *T) V) []V

map 转 slice

func Max

func Max[T any, V Number](list []T, getValue func(item *T) V) *T

获取列表中最大的一项,支持 struct slice

func Md5 added in v0.9.2

func Md5(buff []byte) string

func Merge added in v0.5.2

func Merge[T any](a1 []T, a2 []T) []T

func Min

func Min[T any, V Number](list []T, getValue func(item *T) V) *T

获取列表中最小的一项,支持 struct slice

func Objectify

func Objectify[T any, V any](list []T, getKey func(item *T) string, getValue func(item *T) V) map[string]V

slice 转 map

func Ptr added in v0.6.1

func Ptr[T any](val T) *T

get address of value

func QueryString added in v0.3.1

func QueryString(params map[string]string) string

object 排序后,转查询参数,不带?返回

func Random

func Random(min int, max int) int

随机数

func RandomString

func RandomString(length int) string

随机字符串,不含特殊字符

func Reduce

func Reduce[T any, V any](list []T, inter func(prev *V, cur *T, index int) *V, initValue *V) *V

遍历 list 并折合成 initValue 类型

func Remove added in v0.5.0

func Remove[T any](list []T, index int) []T

移除数组下标为 index 的项

func Round

func Round(value float64, len int) float64

4舍5入到某位小数点

func SetInterval added in v0.3.0

func SetInterval(duration time.Duration, cb func()) chan bool

循环定时,暂时启动后不能停止 @return cancel signal:cancel <- false

func Sha1 added in v0.9.2

func Sha1(buff []byte) string

func Sort

func Sort[T any](list []T, compare func(a *T, b *T) bool)

排序,直接修改原数组 switch pos when compare return true

func Sum

func Sum[T any, V Number](list []T, getValue func(item *T) V) V

sum slice 内某项数据

func Trunc

func Trunc[T Number](value T, block T) T

获取 value 内 block 的最大倍数

func TruncateDay added in v0.12.8

func TruncateDay(t time.Time) time.Time

func Validate added in v0.13.0

func Validate(data any) error

Types

type Bus

type Bus[T any] struct {
	// contains filtered or unexported fields
}

事件总线 T:上下文泛型

func NewBus

func NewBus[T any](onResult BusOnResultFunc[T]) *Bus[T]

func (*Bus[T]) Emit

func (t *Bus[T]) Emit(ctx T, event string, data any)

触发事件 event:事件名称 data:事件参数,推荐使用指针

func (*Bus[T]) On

func (t *Bus[T]) On(event string, bsn string, cb BusCallBack[T])

event:监听的事件名称 bsn:业务名称 用于做结果稽查,bsn 确定后,不应更改,以便后续重用 cb:回调函数

func (*Bus[T]) Retry added in v0.12.6

func (t *Bus[T]) Retry(ctx T, event string, data any, bsns []string)

event:监听的事件名称 data:事件数据 bsns:仅重试的事件 重试情况下,结果回调仍会被触发

type BusCallBack

type BusCallBack[T any] func(ctx T, event string, data any) error

type BusEventResult added in v0.12.13

type BusEventResult struct {
	Bsn string
	Res error
}

type BusOnResultFunc added in v0.12.6

type BusOnResultFunc[T any] func(ctx T, event string, data any, allSuccess bool, details []BusEventResult)

type HttpOptions added in v0.12.4

type HttpOptions struct {
	Query       map[string]string
	ContentType string
	// default 1 minute
	// 0 表示无超时
	Timeout *time.Duration
}

type Map

type Map[T any] struct {
	// contains filtered or unexported fields
}

线程安全 map

func NewMap added in v0.11.0

func NewMap[T any]() *Map[T]

func (*Map[T]) Clear added in v0.11.0

func (t *Map[T]) Clear()

func (*Map[T]) Del added in v0.11.0

func (t *Map[T]) Del(key string)

func (*Map[T]) ForEach added in v0.11.0

func (t *Map[T]) ForEach(cb func(key string, value T) bool)

func (*Map[T]) Get added in v0.11.0

func (t *Map[T]) Get(key string) T

获取元素,不存在时会返回零值,如果需要判断是否存在,使用 Has 获取

func (*Map[T]) Has added in v0.11.1

func (t *Map[T]) Has(key string) bool

判断元素是否存在

func (*Map[T]) Len added in v0.11.0

func (t *Map[T]) Len() int

func (*Map[T]) Set added in v0.11.0

func (t *Map[T]) Set(key string, value T)

type Number

type Number interface {
	uint8 | int8 | uint16 | int16 | uint32 | int32 | uint64 | int64 | uint | int | float32 | float64
}

type Response added in v0.12.3

type Response[T any] struct {
	Rsp        *http.Response
	StatusCode int
	RawData    []byte
	Data       T
}

func Get added in v0.12.3

func Get[T any](url string, options *HttpOptions) (*Response[T], error)

发送 get 请求 默认1分钟超时

func Post added in v0.12.3

func Post[T any](url string, payload []byte, options *HttpOptions) (*Response[T], error)

发送 post 请求,默认application/json;charset=utf-8 默认1分钟超时 @body *struct{} map 或 []byte

func (*Response[T]) ParseJson added in v0.12.14

func (t *Response[T]) ParseJson() error

param 需为指针类型

type Set added in v0.12.0

type Set[T any] struct {
	// contains filtered or unexported fields
}

func NewSet added in v0.12.0

func NewSet[T any](compare func(a T, b T) bool, useMu bool, args ...T) *Set[T]

func (*Set[T]) Add added in v0.12.0

func (t *Set[T]) Add(values ...T) int

添加元素

func (*Set[T]) At added in v0.12.1

func (t *Set[T]) At(index int) T

获取某项,注意不要访问越界

func (*Set[T]) Del added in v0.12.0

func (t *Set[T]) Del(value T) bool

删除元素,幂等 return 元素是否删除了存在的元素

func (*Set[T]) ForEach added in v0.12.0

func (t *Set[T]) ForEach(f func(index int, item T) bool)

遍历元素 遍历函数返回 false 时,终止遍历

func (*Set[T]) Has added in v0.12.0

func (t *Set[T]) Has(value T) bool

判断元素是否存在

func (*Set[T]) IndexOf added in v0.12.0

func (t *Set[T]) IndexOf(value T) int

获取元素下标 不存在时返回 -1

func (*Set[T]) Len added in v0.12.0

func (t *Set[T]) Len() int

获取元素长度

type StringSet added in v0.5.0

type StringSet struct {
	// contains filtered or unexported fields
}

线程安全

func NewStringSet added in v0.5.0

func NewStringSet(args ...string) *StringSet

func (*StringSet) Add added in v0.5.0

func (t *StringSet) Add(values ...string)

func (*StringSet) Delete added in v0.5.0

func (t *StringSet) Delete(value string)

func (*StringSet) ForEach added in v0.5.0

func (t *StringSet) ForEach(f func(item string) bool)

callback 返回值为 false 则中断遍历

func (*StringSet) Has added in v0.5.0

func (t *StringSet) Has(value string) bool

func (*StringSet) IndexOf added in v0.12.0

func (t *StringSet) IndexOf(value string) int

func (*StringSet) Len added in v0.5.0

func (t *StringSet) Len() int

type ValidateError added in v0.13.0

type ValidateError struct {
	Key    string
	Label  string // 如果不提供,则会使用Key 名称
	ErrMsg string // 错误信息
}

func (ValidateError) Error added in v0.13.0

func (t ValidateError) Error() string

func (*ValidateError) Is added in v0.13.1

func (t *ValidateError) Is(target error) bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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