V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iawia002
V2EX  ›  程序员

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

  •  
  •   iawia002 · 2018-07-14 11:06:13 +08:00 · 5247 次点击
    这是一个创建于 2329 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    我写了一个 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"
    

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

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

    我是遇到要判断字符串,有时又要判断 int 在不在列表里,不想写两个差不多的函数才这样的
    nino
        13
    nino  
       2018-07-14 20:37:26 +08:00   ❤️ 1
    没有范型,玩不转的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.