范型下,优雅的 Lodash 风

推荐理由

go 语言比较崇尚简单,所以在内嵌包中没有提供过多帮助性的函数,尤其在范型出来前想要写一个简单的对 slice 和 map 间互相转化的方法可能就需要很多行代码,并且这样并不是很优雅。如今,go 范型已经得到官方的正式发布,samber/lo 又提供了优雅的 lodash 风格的工具函数,正是代码重构的好时机。

常见的使用场景

这里只是用 slice 和 map 两个常见结构举个栗子,lo 中支持超多的转化帮助函数供开发使用。

slice → map

在批量接口中,request 中携带 idList ,返回 map response​​​​​​

struct Request {
	IDList []int64
}

struct Response {
	Metas map[int64]Meta
}

// 用于模拟数据库查询数据
struct Meta {
	ID int64
	Name string
}

func MGetMeta(req Request) Response{
	result := make([]Meta,0, len(req.IDList))
	// 执行 db query
	db.Raw("select * from meta where id in ?", req.IDList).Scan(&result)
	return Response{
		Metas: MetaResult2Map(result),
	}
}

// 旧代码: 针对不同的类型需要写不同的转化函数
func MetaResult2Map(metas []Meta)map[int64]Meta{
	res := make(map[int64]Meta)
	for _, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值