💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
>[info] lo * **安装:** ~~~ go get "github.com/samber/lo@latest" ~~~ ~~~ package main import ( "github.com/samber/lo" "github.com/zeromicro/go-zero/core/logx" ) type UserCoupon struct { Id uint64 `db:"id"` // id Name string `db:"name"` // 优惠券名称 } func main() { // 声明切片 userCoupon := make([]UserCoupon, 0) // 添加数据到切片 userCoupon = append( userCoupon, UserCoupon{ Id: 1, Name: "First Coup111on", }, UserCoupon{ Id: 2, Name: "First Coup111on123213", }) UserCouponIds := lo.Map(userCoupon, func(item UserCoupon, index int) uint64 { return item.Id }) logx.Infof("lo.Map() 获取指定列 长度:%d,数据:%+v", len(UserCouponIds), UserCouponIds) expiredCouponMap := lo.SliceToMap(userCoupon, func(item UserCoupon) (uint64, bool) { return item.Id, true }) logx.Infof("lo.SliceToMap() 切片转结构体 长度:%d,数据:%+v", len(expiredCouponMap), expiredCouponMap) var spuIds = []uint64{0, 1, 2, 3, 4, 5} spuIds = lo.Filter(spuIds, func(spu uint64, index int) bool { // return lo.IsNotNil(spu) return lo.IsNotEmpty(spu) }) logx.Infof("lo.Filter() 过滤数据:%+v", spuIds) var couponIds []uint64 lo.ForEach(userCoupon, func(item UserCoupon, index int) { couponIds = append(couponIds, item.Id) }) logx.Infof("lo.ForEach() 循环:%+v", couponIds) if !lo.Contains(spuIds, 0) { logx.Info("lo.Contains() 指定值是存在:不存在") } orderId := "2026010700000000" logx.Infof("lo.ToPtr() 获取变量内存地址:%p", lo.ToPtr(orderId)) if _, ok := expiredCouponMap[1]; ok { // lo.TernaryF() logx.Infof("lo.Ternary() 三目运算:%v", lo.Ternary(ok, "是", "否")) } if maxSpuId := lo.Max(spuIds); maxSpuId > 0 { // lo.Min() logx.Infof("lo.Max() 最大值:%+v", maxSpuId) } array1 := []uint64{1, 2, 3, 4, 5} array2 := []uint64{4, 5, 6, 7, 8} intersection := lo.Intersect(array1, array2) logx.Infof("lo.Intersect() 交集:%+v", intersection) union := lo.Union(array1, array2) logx.Infof("lo.Union() 并集(去重):%+v", union) difference1, difference2 := lo.Difference(array1, array2) logx.Infof("lo.Difference() 差集 - array1中独有:%+v", difference1) logx.Infof("lo.Difference() 差集 - array2中独有:%+v", difference2) mergedDifference := append(difference1, difference2...) logx.Infof("使用 append 合并差集结果:%+v", mergedDifference) // 使用 lo.Union 合并两个差集(会自动去重) uniqueMerged := lo.Union(difference1, difference2) logx.Infof("使用 lo.Union() 合并差集(去重):%+v", uniqueMerged) } ~~~