有 go 的多功能工具库推荐吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
WintersZhang
V2EX    Go 编程语言

有 go 的多功能工具库推荐吗

  •  
  •   WintersZhang 2022-04-23 01:07:27 +08:00 4464 次点击
    这是一个创建于 1276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想问一下大佬们,有没有比较好用的 go 的多功能工具库啊?

    比方说文件压缩,数组去重?等等各种小工具的合集之类的。

    自己写其实都能写出来,不过比如自己想写个小项目,全部手撸还是有些费事。

    维护一个自己的工具库也不是不行,不过要是有比较大一点的库,有更多人维护的话,感觉用起来可能问题会更少一点。

    java 我知道有个hutool,里面很多小工具,还挺好用的。

    7 条回复    2023-09-05 15:33:53 +08:00
    kkhaike
        1
    kkhaike  
       2022-04-23 09:17:52 +08:00
    lusizeng
        2
    lusizeng  
       2022-04-23 09:18:43 +08:00
    可以试下 github.com/kakuilan/kgo ,目前还只是一个人维护
    WintersZhang
        3
    WintersZhang  
    OP
       2022-04-23 11:17:02 +08:00
    @kkhaike 反射的话,确实还挺方便的,contains 什么的感觉经常用到,大部分时候也不用太考虑性能。多谢呀!
    WintersZhang
        4
    WintersZhang  
    OP
       2022-04-23 11:20:52 +08:00
    @lusizeng 多谢大佬!看了一下还是挺多功能的,我先试一试,有机会我也 pr 一下。
    SorcererXW
        5
    SorcererXW  
       2022-04-23 12:04:11 +08:00
    都 go1.18 了,工具库直接用泛型的吧,比如 https://github.com/samber/lo (这个库功能还是蛮全的,虽然些点感觉设计得不好)
    WintersZhang
        6
    WintersZhang  
    OP
       2022-04-23 20:43:08 +08:00
    @SorcererXW 作者好强。。。3 月发布的 1.0 ,现在就近 5k star 了,多谢老哥。1.8 的泛型我都还没怎么看,惭愧
    dablelv
        7
    dablelv  
       2023-09-05 15:33:53 +08:00
    Golang 标准库是 Go 语言自带的一组核心功能库,功能全面,易于使用。

    在 Golang 标准库的基础上,还可以进一步封装常用的工具函数。本文将介绍一些优秀的开源工具函数库,大家可参考使用。

    # samber/lo
    stars 13.5k 。

    [lo]( https://github.com/samber/lo) 是一个基于 Go 1.18+ 泛型的 Lodash 风格的 Go 库。

    该项目最初是作为新泛型实施的实验而开始的。 它在某些方面可能看起来像 Lodash 。 我曾经使用出色的“go-funk”包进行编码,但是“go-funk”使用反射,因此不是类型安全的。

    正如预期的那样,基准测试表明泛型比基于“reflect”包的实现快得多。与纯 for 循环相比,基准测试也显示出类似的性能提升。

    samber/lo 包含了非常多的方法,主要可以划分为以下几类:

    - slice 辅助方法
    - map 辅助方法
    - tuples 辅助方法
    - 多个集合之间计算辅助方法
    - 搜索查询辅助方法
    - 其他函数式编程辅助方法等

    # thoas/go-funk
    stars 4.5k 。

    [go-funk]( https://github.com/thoas/go-funk) 是一个基于 Reflect 的现代 Go 库。

    帮助程序依赖于反射实现泛型,请注意此代码仅在运行时有效,因此您必须拥有良好的测试套件。

    这些帮助函数最初是作为学习反射写出来的。它在某些方面可能看起来像 [lodash]( https://github.com/lodash/lodash),但它会有自己的路线图。lodash 是一个很棒的库,背后有很多工作,go-funk 中包含的所有功能都来自内部用例。

    您还可以在 [godoc]( https://godoc.org/github.com/thoas/go-funk) 中找到类型安全的实现。

    注意,Go 1.18 引入泛型,建议使用泛型而不是反射实现代码复用。

    # duke-git/lancet
    stars 3k 。

    [lancet]( https://github.com/duke-git/lancet) 是 Go 的一个全面、高效、可复用的 util 函数库。 受到 java apache common 包和 lodash.js 的启发。

    具有如下特点:

    全面、高效、可重用。
    600+ go util 函数,支持 string 、slice 、datetime 、net 、crypt...
    仅依赖两种库:go 标准库和 golang.org/x
    每个导出函数均有单元测试。

    # elliotchance/pie
    stars 1.8k 。

    [pie]( https://github.com/elliotchance/pie) 是一个实用函数库,用于对切片和映射进行常见操作。

    # gookit/goutil

    stars 1.7k 。

    [goutil]( https://github.com/gookit/goutil) 包含 Go 常用的一些工具函数:数字,字符串,数组,Map ,结构体,反射,文本,文件,错误,时间日期,特殊处理,格式化,常用信息获取等等。

    # dablelv/cyan

    stars 0.2k 。

    [cyan]( https://github.com/dablelv/cyan) 是我自己主导开发的 Go 工具函数库,将项目开发过程中遇到的常用函数记录下来,方便复用,欢迎大家使用共建。

    具有如下特点:
    - 全面、高效、可重复使用。
    - 包含众多实用函数,支持字符串、切片、映射、日期时间、加密...
    - 只依赖 Go 标准库和 golang.org/x
    - 导出函数的单元测试覆盖率高。

    关于名称 cyan ,取自我母亲名字中的“青”字。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3226 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 12:02 PVG 20:02 LAX 05:02 JFK 08:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86