
最近在做需求
需要根据 shop ids 获取到对应的 额外信息
再根据 shop ids 获取对应的 item 信息
发现没有 lambda 表达式
居然还的一个个去封装。。
就很蛋疼啊。。
1 iBugOne Dec 8, 2021 via Android 为什么需要 lambda 表达式呢?既然 func(){} 可以直接当表达式用(就像 JS function(){} 一样),直接用 func 不也挺好的? DoSomething(func(x int) int { return x+1 }) |
2 Akiya Dec 8, 2021 何止是没有 lambda... 如何从 slice 里面移除一个元素:只需要找到这个元素的 index ,然后再把前后拼接成一个 slice 就可以了 如何从两个 int 取一个最大值呢:math.Max 只支持 float ,那么只需要把要比较的值转成 float 再把结果转回 int 就行了 如何从两个 slice 取出交集呢:这个就复杂了,需要自己写一个库,而且每个类型都得写一遍哦 |
4 aababc Dec 8, 2021 从我个人的感觉来说,go 更多的考量是开发 go 是否更容易,而不是使用 go 是否更容易。使用者的方便与否可能不是重点考虑的范畴。 |
5 partystart OP |
6 sagaxu &nbs; Dec 8, 2021 via Android less is more ,更少的语法糖,更多的代码量 |
7 matrix1010 Dec 8, 2021 via iPhone 你这看上去像是 ORM ,那可能是你的 ORM 不太行. 另外如果真的很多地方用并且模式差不多可以考虑写代码生成。This is the way |
8 ktqFDx9m2Bvfq3y4 Dec 8, 2021 via iPhone 然而并不妨碍被国内追捧。 珍惜生命,只写 C#。 |
9 partystart OP @matrix1010 就很正常的 http/db 调用 根据 shop id 去 获取到商品 / extra/ item 信息 最后根据 shop id 聚合起来。。 三个 list 聚合起成一个 map 写了半天。。 |
10 matrix1010 Dec 8, 2021 @partystart 不太清楚你的实际情况,但如果让我写一个类似的接口差不多是这样。先用 ORM 查出数据与关联数据,shop = shop.query().where(id=1).withItems(func(q) {q.withextra()}).all(), 然后直接把这个 struct 转成 json |
11 6IbA2bj5ip3tK49j Dec 8, 2021 楼上都偏题了,这是没有泛型导致的,和 lambda 没关系。 |
12 Buges Dec 8, 2021 via Android @iBugOne 不能类型推导,还得加类型。js 是动态语言不用担心这个问题。现在有泛型了,你写个 filter 或 map 接口就知道有多难用了。 |
14 labulaka521 Dec 8, 2021 那就换个语言路,做之前不看吗? |
15 cmdOptionKana Dec 8, 2021 |
16 EscYezi Dec 9, 2021 via iPhone 集合操作 funk 和 golinq 结合使用能省不少事,但是没范型还是差了点意思 |
17 Trim21 Dec 9, 2021 via Android 直接用匿名函数不也挺方便的 |
18 mind3x Dec 9, 2021 是不是对 lambda 有什么误解? https://go.dev/ref/spec#Function_literals Golang 只是语法上比较 verbose 。并不是只有用 `=>`/`->`的才叫 lambda 。 |
19 ACEonly Dec 9, 2021 go 泛型出了啊 |
20 yulon Dec 9, 2021 Go 不是有 lambda 也有闭包啊,我用了十年的假 Go ? |
21 wellsc Dec 9, 2021 小而美 |
22 libook Dec 9, 2021 Go 是拿灵活性来换取生产效率的,特性少会使得实现方案少,当一个需求每个人的代码风格、实现方案都一样的时候,可以避免团队合作的很多问题。 Go 是一款用于精准解决企业生产问题的产品,不适合用于满足个人对技术方面的追求。 |
23 goxy Dec 9, 2021 |
24 littlewing Dec 9, 2021 来用 C++ 20 吧,要啥有啥 |
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) ``` |
26 masterclock Dec 9, 2021 @Akiya 不仅嗦,而且全是 interface{} |
27 qq1340691923 Dec 9, 2021 有泛型就好点了 |