代码密度太低了,经常要这么写:
1: var val string
2: if ok {
3: val = "okay"
4: } else {
5: val = "fail"
6: }
即使优化一下,还有:
1: val := okay
2: if !ok {
3: val = "fail"
4: }
要是 kotlin,swift, java, c++, c ,来得多快啊,尤其很多个这种条件初始赋值的时候,看版面,就像在搞笑似的。
1
zhwguest OP java,c,c++也不错
|
2
itakeman 9 小时 57 分钟前 via Android
喜欢 golang 喜欢的不得了
|
3
poltao 9 小时 54 分钟前
学会与自己和解,不要在意这些细节
|
4
aloxaf 9 小时 50 分钟前 1
google 的语言设计水平和 MS 比就是一坨翔(用 golang 和 dart 有感
|
5
seth19960929 9 小时 50 分钟前
|
6
seth19960929 9 小时 49 分钟前 2
|
7
youyouzi 9 小时 45 分钟前
前端表示很平和,和 js 逻辑一样
|
8
kandaakihito 9 小时 42 分钟前
go 的设计思想确实神奇,缺少很多特性。一查为什么没有,固定回答基本都是 “你自己可以手搓,那样更加 clear”
|
9
w568w 9 小时 36 分钟前
@seth19960929 #6 这个很多时候不能平替条件运算符。比如如果 v1 、v2 是有副作用的,或者要执行很耗时的计算,那就没法用 When 了。
---- 另外 Go 就是 Google 做出来解决自己需求的,如果你觉得写起来难受,说明你的使用场景和 Google 那帮人不一样,就别硬用了。 |
10
hefish 9 小时 35 分钟前
这样不是挺好嘛,能把工作量提高啊。。。
|
11
dobelee 9 小时 35 分钟前
这个确实很迷,还是保留 c++的三目运算符好一些。
|
12
DefoliationM 9 小时 28 分钟前
推荐使用 java,没必要和自己过不去,用自己喜欢的就行了。
|
13
kk2syc 9 小时 25 分钟前
10 年前用 php 的时候也是有一群人喷不是强类型 = =| 其实不影响赚钱就行了,如果是自己的项目建议换自己喜欢的语言。
|
14
guanzhangzhang 9 小时 15 分钟前
|
15
doraemonki 9 小时 9 分钟前 via Android
如无必要勿增实体
|
16
xuxu555 9 小时 3 分钟前
hhhh, golang 确实是这样。不过不得不说,除了这个 err 判断繁琐点,其他真的挺简洁了。
|
17
csys 8 小时 58 分钟前 1
最简洁直观的:
var val = if ok "okay" else "fail" 或者 var val = ok match { true => "okay", false => "fail" } |
18
liuliuliuliu 8 小时 45 分钟前
推荐试一下 C# 😊
|
19
akira 8 小时 13 分钟前
这种小事情。。真不重要了。。
|
21
Leviathann 6 小时 13 分钟前
@doraemonki var val string 和下面的两处 val =,都属于无必要又增实体
|
22
doraemonki 5 小时 47 分钟前 via Android
@Leviathann 从 Go 语言的设计哲学出发考虑,引入三元表达式增加的复杂度远超带来的收益,增加了理解难度还带来了代码风格的问题(深度嵌套的写法一定会出现),普通的 if else 是最常用的写法,足够简洁,即使是初学者也能一眼看懂
|
23
fregie 5 小时 36 分钟前 1
代码密度高不一定是好事,越是简化的高级语法越难读,项目规模上来后简直是灾难
满屏的高度浓缩三元表达不头疼吗 |
24
xiaoyecreate 5 小时 22 分钟前
学会与自己和解,不要在意这些细节,能解决问题就可以了
|
25
extrem 4 小时 24 分钟前
总结一下就是,引入一般的三目运算符会导致在很多场景下与当前“go 哲学”相悖的用法出现,弊大于利,而在当前的计算机语言演进道路上又没有找到更好的办法了,所以索性维持现状
|
26
extrem 4 小时 21 分钟前
我之前也经常要吐槽但后来发现确实是没办法,这些软件构建的基础设施的设计要考虑的比让我们不爽的点多得多,所以少即使多,没有完美的语言只有完美的选择
|
27
proxytoworld 3 小时 57 分钟前
没有三目运算符确实难受
|
28
LaTero 3 小时 24 分钟前 via Android
@extrem 有更好的方法呀,把 if 从 statement 改成 expression 就行,很多现代语言都支持类似这样的:
var v = if (pred) a else b |
29
ixixi 3 小时 9 分钟前
不喜欢就不要用,干嘛委屈自己
|
30
zgcwkj 3 小时 5 分钟前
你是想说没有**三目运算符**?
|
31
lekai63 2 小时 32 分钟前 via iPhone
比较适合“按代码行数算绩效”的公司使用 🐶
|
32
victorc 1 小时 33 分钟前
你去用两天 rust
回来看 go 哪哪都好 |
33
sealinfree 1 小时 12 分钟前
改写为 go 的形式
// When 三元表达式 func When[T any](Check bool, TrueVal, FalseVal T) T { if Check { return TrueVal } else { return FalseVal } } |
34
sealinfree 1 小时 11 分钟前
使用效果 aaa := When(1 == 1, 1, 2)
aaa 值为 1 |
35
sagaxu 1 小时 6 分钟前
|
36
redbule 35 分钟前
如果你觉得不优雅,那么只有 pattern match 能满足你了。
|
37
bzj 21 分钟前
没看懂有什么问题
|
38
bzj 20 分钟前
你应该就属于那种认为 PHP 是全世界最好语言的群体
|