既然都支持函数 /方法作为“对象”了,好歹放到标准库里也行啊,为什么只能找第三方库?是什么设计思想导致了这个状况 ?
1
banishee 2020-10-30 10:45:13 +08:00
golang 没有各种数据结构,有点小烦
|
2
Mitt 2020-10-30 10:45:37 +08:00 12
因为没有泛型
|
3
SuperMild 2020-10-30 10:55:19 +08:00
二楼正解,没范型影响很大
|
4
coderxy 2020-10-30 11:00:08 +08:00
你可以用 sort.Search
|
5
xkeyideal 2020-10-30 11:04:29 +08:00
那三个老头定的基调,go 的设计思想就决定了不会搞这么多语法糖,提 issue 也没用,要么自己写,要么第三方,话说这玩意写起来也简单,官方不实现也挺好的,省的学了
|
6
stevenbipt 2020-10-30 11:16:03 +08:00
没有范型,而且就算你说了官方也大概率不会听
|
7
abcbuzhiming 2020-10-30 11:49:03 +08:00 1
Go 的设计者,最开始就是想搞个比 C 更好用的语言而已,你想想 C 是多么简单的语言。并且 Go 的设计者一开始压根就没想把 Go 开源出去,只想自己内部用用。并且主要目的是用来写“网络基础设施”
但是后来没想到这个语言公开出来后火了,大量的人用来写 web 应用,应用层和基础设施侧重点就有区别,基础设施你没有泛型,无所谓,业务应用没有泛型就很别扭。所以 go 的泛型在社区不断的呼声中“不情不愿”的加上去的,至少有相当长的一段时间,Go 的官方是明确说过不加泛型这个话的。 所以有些问题就属于娘胎来的毛病,Go 这个语言在原始设计的时候走的就是极简主义。 |
8
dbskcnc 2020-10-30 11:50:36 +08:00
这个真的是范型的专长,包括 C++以前也是一样,有了范型,stl 就横空出世了
还是期待 go 1.17 吧 |
9
cheng6563 2020-10-30 12:03:14 +08:00
go 只是 c 的升级版,不要把他当成多高层的语言
|
12
lithbitren 2020-10-30 12:25:12 +08:00
主要是没泛型,迭代器里面很直接难套函数
|
13
gowk 2020-10-30 13:11:38 +08:00
https://github.com/robpike/filter
I wanted to see how hard it was to implement this sort of thing in Go, with as nice an API as I could manage. It wasn't hard. Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops. You shouldn't use it either. 看了 Rob Pike 上面的话,我忍不住笑了,大神的意思是: “map / reduce / filter 这些玩意真的有那么好吗,好吧,我试着写一个库来实现这些东西,Go 实现起来就是小菜一碟。 但是,我实现了又怎么了,这些代码一动不动的躺在这里好几年了,我他妈根本没有场合去使用它!我平时用用 for 就行了,我证明了这些东西没用,所以你们也不要用了。” 可。。可是 Pike 大神,你平时写的都是 infrastructure,并不理解我们写业务写 CURD 的痛。。 权当供大家一笑 |
14
QBugHunter 2020-10-30 13:29:53 +08:00
|
15
icyalala 2020-10-30 13:38:27 +08:00
@QBugHunter C 确实比较简单,从语言的复杂性上来说。。
|
16
azcvcza 2020-10-30 14:19:45 +08:00
写习惯 C 的都是无脑写 for 的,刚开始写 js 我也不喜欢写 forEach,reduce, map, filter, find,some,
|
17
chogath 2020-10-30 14:46:46 +08:00
底层 go,业务层 rpc to node.js, 有啥好纠结的,就非得一把梭?
|
18
index90 2020-10-30 15:16:00 +08:00
为什么总是拿 java 或其他语言的东西往 go 上套,那你又为了什么转 go,赶时髦吗?
|
19
est 2020-10-30 15:25:47 +08:00 via Android
go 是写给机器高效执行的,不是写给人看的。
|
20
lululau OP @index90 好的特性为什么不能借鉴? Java 的 Stream API 也是 Java 8 才加入的。。。
楼上有人都说了,未来 go 应该会加入对范型的支持,那离支持这种所谓“函数式编程”也不会太远,等着被打脸吧。。。 不过我觉得就你这种心态,可能等不到被打脸,就在程序员这行干不下去了 |
22
Glauben 2020-10-30 15:34:46 +08:00
go 基本已经确定了明年会增加对泛型的支持啊,具体是 2 月还是 8 月不确定,实现方法看起来也还不错。
|
23
FireFoxAhri 2020-10-30 15:37:21 +08:00 via Android
函数式的算子比写 for 方便多了,流式简短直观,scala 程序员试了下 go,这都没有确实有点不能接受
|
24
Rwing 2020-10-30 15:38:49 +08:00
要说特性,C#最多,然而。。。。
|
25
abcbuzhiming 2020-10-30 15:38:57 +08:00 2
@QBugHunter
这怎么是反话? C 语言在语言层面上怎么不简单? C 语言之父专门描述过它当初设计 C 语言的想法,就专门提到它设计 C 语言的核心思想就来源 Unix,保持简单是核心思想。C 程序设计语言那本书才多厚? C 语言本身几乎没有任何花里胡哨的东西,纯过程语言,语法糖都没有,怎么不简单? C 语言在语言层面上是非常简单的,复杂的是围绕 C 语言的其它知识,尤其是计算机体系的基础。这导致你要用 C 语言写出可用的程序,不光是了解 C 语言的知识就行的。但是 C 语言本身特性,就是简单 |
26
no1xsyzy 2020-10-30 15:42:40 +08:00
@QBugHunter 是下层简单,不是用起来简单,worse is better 的那个 better
|
28
Jirajine 2020-10-30 15:51:26 +08:00 via Android
|
29
chenqh 2020-10-30 15:57:00 +08:00 via Android
但是 golang 不只是用来写中间件,写 web 没有泛型?
|
30
lxk11153 2020-10-30 16:57:45 +08:00
可能过早优化是万恶之源吧 [doge]
|
32
namelosw 2020-10-30 18:56:48 +08:00 via iPhone
说得好像第三方库也能写得出来标准的 map reduce 一样...
|
33
pkwenda 2020-10-31 03:59:41 +08:00 via iPhone
@QBugHunter 楼主的意思我理解了,但是我表达不出来,阿巴阿巴阿巴
|
34
runze 2020-10-31 09:00:35 +08:00
|
36
b00tyhunt3r 2020-11-21 14:20:40 +08:00 via iPhone
@chogath 非杠 但如果要追求性能的话我为什么要用 go😂
|