go 没有 lambda 表达式。。很蛋疼啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
partystart

go 没有 lambda 表达式。。很蛋疼啊

  •  
  •   partystart Dec 8, 2021 5974 views
    This topic created in 1601 days ago, the information mentioned may be changed or developed.

    最近在做需求

    需要根据 shop ids 获取到对应的 额外信息

    再根据 shop ids 获取对应的 item 信息

    发现没有 lambda 表达式

    居然还的一个个去封装。。

    就很蛋疼啊。。

    27 replies    2021-12-09 15:15:22 +08:00
    iBugOne
        1
    iBugOne  
       Dec 8, 2021 via Android
    为什么需要 lambda 表达式呢?既然 func(){} 可以直接当表达式用(就像 JS function(){} 一样),直接用 func 不也挺好的?

    DoSomething(func(x int) int { return x+1 })
    Akiya
        2
    Akiya  
       Dec 8, 2021   11
    何止是没有 lambda...
    如何从 slice 里面移除一个元素:只需要找到这个元素的 index ,然后再把前后拼接成一个 slice 就可以了
    如何从两个 int 取一个最大值呢:math.Max 只支持 float ,那么只需要把要比较的值转成 float 再把结果转回 int 就行了
    如何从两个 slice 取出交集呢:这个就复杂了,需要自己写一个库,而且每个类型都得写一遍哦
    aababc
        3
    aababc  
       Dec 8, 2021
    @Akiya 我怀疑你在黑 go ,但是我又没有证据。可能这就是大道至简吧!
    aababc
        4
    aababc  
       Dec 8, 2021
    从我个人的感觉来说,go 更多的考量是开发 go 是否更容易,而不是使用 go 是否更容易。使用者的方便与否可能不是重点考虑的范畴。
    partystart
        5
    partystart  
    OP
       Dec 8, 2021
    @iBugOne 总不可能每个项目都写一个 util 函数吧?

    就算你写的过来

    能让全公司都用这个库?

    js/java 这些直接在语言 sdk 层次封装好了

    谁闲得蛋疼 去做个统一库封装
    sagaxu
        6
    sagaxu &nbs;
       Dec 8, 2021 via Android
    less is more ,更少的语法糖,更多的代码量
    matrix1010
        7
    matrix1010  
       Dec 8, 2021 via iPhone
    你这看上去像是 ORM ,那可能是你的 ORM 不太行. 另外如果真的很多地方用并且模式差不多可以考虑写代码生成。This is the way
    ktqFDx9m2Bvfq3y4
        8
    ktqFDx9m2Bvfq3y4  
       Dec 8, 2021 via iPhone   1
    然而并不妨碍被国内追捧。

    珍惜生命,只写 C#。
    partystart
        9
    partystart  
    OP
       Dec 8, 2021
    @matrix1010
    就很正常的 http/db 调用

    根据 shop id 去 获取到商品 / extra/ item 信息

    最后根据 shop id 聚合起来。。

    三个 list

    聚合起成一个 map

    写了半天。。
    matrix1010
        10
    matrix1010  
       Dec 8, 2021
    @partystart 不太清楚你的实际情况,但如果让我写一个类似的接口差不多是这样。先用 ORM 查出数据与关联数据,shop = shop.query().where(id=1).withItems(func(q) {q.withextra()}).all(), 然后直接把这个 struct 转成 json
    6IbA2bj5ip3tK49j
        11
    6IbA2bj5ip3tK49j  
       Dec 8, 2021
    楼上都偏题了,这是没有泛型导致的,和 lambda 没关系。
    Buges
        12
    Buges  
       Dec 8, 2021 via Android
    @iBugOne 不能类型推导,还得加类型。js 是动态语言不用担心这个问题。现在有泛型了,你写个 filter 或 map 接口就知道有多难用了。
    pythonee
        13
    pythonee  
       Dec 8, 2021   1
    @Chad0000 羡慕能用 C#出活的同学
    labulaka521
        14
    labulaka521  
       Dec 8, 2021
    那就换个语言路,做之前不看吗?
    cmdOptionKana
        15
    cmdOptionKana  
       Dec 8, 2021
    @partystart

    造成你耗时长,一半原因是不熟悉,一半原因是心理厌恶导致感觉时间长。

    如果熟悉 Go 语言,虽然要多敲几下键盘,但实际也就多花几分钟,写程序又不是写小说,再麻烦也没多少字。
    EscYezi
        16
    EscYezi  
       Dec 9, 2021 via iPhone
    集合操作 funk 和 golinq 结合使用能省不少事,但是没范型还是差了点意思
    Trim21
        17
    Trim21  
       Dec 9, 2021 via Android
    直接用匿名函数不也挺方便的
    mind3x
        18
    mind3x  
       Dec 9, 2021   3
    是不是对 lambda 有什么误解?
    https://go.dev/ref/spec#Function_literals

    Golang 只是语法上比较 verbose 。并不是只有用 `=>`/`->`的才叫 lambda 。
    ACEonly
        19
    ACEonly  
       Dec 9, 2021
    go 泛型出了啊
    yulon
        20
    yulon  
       Dec 9, 2021
    Go 不是有 lambda 也有闭包啊,我用了十年的假 Go ?
    wellsc
        21
    wellsc  
       Dec 9, 2021
    小而美
    libook
        22
    libook  
       Dec 9, 2021
    Go 是拿灵活性来换取生产效率的,特性少会使得实现方案少,当一个需求每个人的代码风格、实现方案都一样的时候,可以避免团队合作的很多问题。

    Go 是一款用于精准解决企业生产问题的产品,不适合用于满足个人对技术方面的追求。
    goxy
        23
    goxy  
       Dec 9, 2021
    littlewing
        24
    littlewing  
       Dec 9, 2021
    来用 C++ 20 吧,要啥有啥
    Akiya
        25
    Akiya  
       Dec 9, 2021
    @goxy 我看了一下这个库,今天跟 leader 申请了,看能不能引入。
    但是感觉代码还是很嗦,比如第一个例子,go 实现是
    ```go
    From(cars).Where(func(c interface{}) bool {
    return c.(Car).year >= 2015
    }).Select(func(c interface{}) interface{} {
    return c.(Car).owner
    }).ToSlice(&owners)
    ```
    但如果是 C#的话:
    ```cs
    owners = cars.Where(c => c.year >= 2015).Select(c => c.owner)
    ```
    masterclock
        26
    masterclock  
       Dec 9, 2021
    @Akiya 不仅嗦,而且全是 interface{}
    qq1340691923
        27
    qq1340691923  
       Dec 9, 2021
    有泛型就好点了
    About     Help     Advertise     Blog     API     FAQ     Solana     986 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 19:46 PVG 03:46 LAX 12:46 JFK 15:46
    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