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