82 条回复 • 2020-06-18 12:35:25 +08:00

yuchenyang19941 天前
天天喊要来了,倒是发布啊
1

timothyye1 天前
预计最早得明年 8 月了。
The earliest that generics could be added to Go would be the Go 1.17 release, scheduled for August 2021
The earliest that generics could be added to Go would be the Go 1.17 release, scheduled for August 2021
14

cmdOptionKana1 天前
Go 团队真的很稳,很耐心挑选方案。
而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化,这个设计原则非常棒。
比如,官方的例子 Print 函数使用了泛型,它是这样使用的:
Print([]string{"Hello, ", "world"}) //输出 Hello, world
Print([]int{3, 4, 5}) //输出 345
如果不管 Print 是怎么实现的,只看它是怎么使用的,就会觉得非常简洁,而且兼容 Go 1 。
而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化,这个设计原则非常棒。
比如,官方的例子 Print 函数使用了泛型,它是这样使用的:
Print([]string{"Hello, ", "world"}) //输出 Hello, world
Print([]int{3, 4, 5}) //输出 345
如果不管 Print 是怎么实现的,只看它是怎么使用的,就会觉得非常简洁,而且兼容 Go 1 。
42
liulaomo1 天前
@cmdOptionKana
> 而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化
用这边怎么设计都会很简化。关键看能不能把 “写” 泛型也给简化了,否则不是一个好设计。
> 而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化
用这边怎么设计都会很简化。关键看能不能把 “写” 泛型也给简化了,否则不是一个好设计。
54

tianshilei199221 小时 29 分钟前
@whoami9894 习惯了 C++ 的写法觉得其他的都丑,然而所有年轻的语言都觉得 C++ 的写法反人类…😂虽然我一直是 C++ 吹,但是我知道大部分的人都认为 C++ 的语法很反人类,比如说 lambda…
63
Balthild18 小时 18 分钟前
@tianshilei1992 别偷换概念,这里「习惯了 C++ 的写法」特指 C++ 采用的这种尖括号泛型语法,你把 C++ 换成 Java 、Rust 、TypeScript 也一样成立。而年轻语言觉得「 C++ 的写法反人类」指的是 C++ 的其他特性,显然这些被批判的部分并不一定包括泛型语法。
67
islxyqwe11 小时 46 分钟前
func Map(type T, M)(f func(T) M, s []T) []M {
result := make([]M, len(s))
for k, v := range s {
result[k] = f(v)
}
return result
}
func main() {
Print(Map(func(a int64) string { return strconv.FormatInt(a, 16) }, []int64{42, 100, 200}))
}
还可以,处理数据总算能写的简洁点了
result := make([]M, len(s))
for k, v := range s {
result[k] = f(v)
}
return result
}
func main() {
Print(Map(func(a int64) string { return strconv.FormatInt(a, 16) }, []int64{42, 100, 200}))
}
还可以,处理数据总算能写的简洁点了
69

FrankHB10 小时 43 分钟前
@Balthild C++ 反人类的设计显然包括不知所谓的本该避免的文法歧义,使用 <> 多出来的问题就是 C++ 反人类设计的典型杰出代表之一,这不因为其它问题更拉仇恨而改变。你没有一下子搞清楚这点,而强调“并不一定”,看来是不够熟悉 C++ 。(事实是,不想硬抄 instantiation phase 而老实写形式语法的根本没法在实用上绕过这坨○。)
虽然其它许多用 <> 的语言并没有那么夸张的歧义问题,但是用 <> 的必要性仍然相当莫名其妙,有不尊重语用来源之嫌。
选择照抄 C++ 这样设计的语言设计者和语言的用户,大概也不一定了解 C++ 在这方面的历史包袱。而选择不照抄 C++ 却同样使用这种糟粕设计的语言设计者,大概至少一样无可救药(至少没几个语言有当初 C++ 对 basic source character set 那么纠结的需求,也不是事后才扩展出 template 的)。
虽然其它许多用 <> 的语言并没有那么夸张的歧义问题,但是用 <> 的必要性仍然相当莫名其妙,有不尊重语用来源之嫌。
选择照抄 C++ 这样设计的语言设计者和语言的用户,大概也不一定了解 C++ 在这方面的历史包袱。而选择不照抄 C++ 却同样使用这种糟粕设计的语言设计者,大概至少一样无可救药(至少没几个语言有当初 C++ 对 basic source character set 那么纠结的需求,也不是事后才扩展出 template 的)。
74

lithbitren7 小时 54 分钟前 via iPhone
@notamail list 还好吧,而且队列手写也好写啊,直接用数组性能比 list 快几倍,我说的是 container/heap
81