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

2018-07-14 11:06:13 +08:00
 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"

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

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

我是遇到要判断字符串,有时又要判断 int 在不在列表里,不想写两个差不多的函数才这样的
nino
2018-07-14 20:37:26 +08:00
没有范型,玩不转的

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

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

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

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

© 2021 V2EX