Go 语言版 lodash/Underscore,这个 idea 怎么样

2018 年 7 月 14 日
 iawia002

把一些常见的、基础的操作单独封装,比如反转字符串,元素在不在列表里,哈希等等,然后组成一个工具库

我写了一个 demo,https://github.com/iawia002/ut

大致效果如下:

gore> :import github.com/iawia002/ut
gore> ut.Reverse("12345")
"54321"
gore> ut.Range(0, 5)
[]int{0, 1, 2, 3, 4, 5}
gore> ut.TrimSpace("1 2\n3\t45")
"12345"
gore> ut.Domain("hello.com")
"hello"
gore> ut.ItemInSlice("a", []string{"a", "b", "c"})
true
gore> ut.Md5("123")
"202cb962ac59075b964b07152d234b70"

有没有同学有什么想法呀,我们可以深入♂探讨一下

6389 次点击
所在节点    程序员
13 条回复
gowk
2018 年 7 月 14 日
嘿嘿,目前一大波 Java,Node 库都可以照搬到 Go,练习 Go 编程不说,还可以攒 Star,找到下份 Go 工程师的工作指日可待
Cbdy
2018 年 7 月 14 日
把 Java 的 Guava,Common 抄一下,稳了
ericgui
2018 年 7 月 14 日
@gowk 有道理
agdhole
2018 年 7 月 14 日
一直在用 js 的 lodash,超强的库
搬到 go 目测可以弄很多星星
iawia002
2018 年 7 月 14 日
受限于语言特性,有些东西很难搬。我现在写的都是在其他项目中用到比较多的
reus
2018 年 7 月 14 日
多余
tiancaiamao
2018 年 7 月 14 日
要么使用弱类型,要么有类型系统,否则玩函数式就是残疾的。
Go 都不满足。什么,你想用 interface{}?慢慢玩
zzf
2018 年 7 月 14 日
https://gubrak.github.io/#/documentation 这个已经有人做了一些了
iawia002
2018 年 7 月 14 日
@zzf Get ✓
reus
2018 年 7 月 14 日
@tiancaiamao go 用函数式完全没问题。还有类型系统,哪个语言没有类型系统?
coyove
2018 年 7 月 14 日
其实就拿你的 ItemInSlice 来说,
java 可以写:boolean ItemInSlice(List<?> list)
但 go 不能写:func ItemInSlice(slice []interface{}) bool
go 的类型系统里不存在真正意义上的泛型,这个前提就已经让所有这样类似的函数都必须用 interface{}加反射实现,意义真的不大
iawia002
2018 年 7 月 14 日
@coyove 嗯,确实不优雅

我是遇到要判断字符串,有时又要判断 int 在不在列表里,不想写两个差不多的函数才这样的
nino
2018 年 7 月 14 日
没有范型,玩不转的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX