您必须在当前工作中使用Go。 我对这种语言非常熟悉。 我不喜欢他,他的受欢迎程度使我感到困惑。
人机工程学设计从未遇到过如此公开反对开发人员便利的语言。 例如,Rob Pike反复公开地对
Go Playground上有关语法高亮的任何讨论表示敌意。 在回答用户用词合理的问题时,他的公开回复反映了疏忽和不尊重:
Gofmt是专门为减少关于代码格式的毫无意义的讨论而编写的,这种讨论效果很好。 不幸的是,这并没有影响关于语法高亮或我喜欢称之为spitzensparken blinkelichtzen的无意义讨论的数量。
在
2012年的Go-Nuts分支中又一次:
语法突出显示-适用于小孩子。 小时候,我被教导用彩色棍棒算术。 现在我已经长大了,并使用黑白数字。
显然,在Rob的熟人中,没有人患有联觉,阅读障碍或视力不好。 由于其位置,Go的官方网站和文档仍未突出显示语法。
Go开发团队不仅限于Pike,其他人也强烈支持其对人体工程学的态度。 在讨论
联合/总和类型时 ,ianlancetaylor拒绝了一个明确定义人机工程学优势的请求,因为该要求太微不足道并且不值得关注:
过去(包括在公开发布之前)对此进行了多次讨论。 然后我们得出结论,求和类型不会特别扩展接口类型。 如果您看的话,最后归结为这样一个事实,即编译器会检查您是否已在所有类型切换的情况下完成了操作。 更改语言的好处很小。
这种态度与其他语言中的工会类型不一致。 在2000年,JWZ批评Java:
, enum :keywords . (, , «`enumeration value x'
, switch»).
Java , Java . — , Rust, Scala, Elixir , Go, C — , . , , Go .
, . .
, Go . , . Go « » « », .
, « ». , , , , , . Go ,
, Java 1.4.
— . , , , . ,
Go.
Google, «» «» .
go get
. — , Go .
Go, , , . C Autotools — , . , 21 .
GOPATH
.
vendor
, , «» «» .
, Go « » .
Go
Go , , ( ; Go )
error
,
nil
« ».
, Go. , , . , : , ,
error
- , , — .
Go , - :
a, err := fallibleOperationA()
if err != nil {
return nil, err
}
b, err := fallibleOperationB(a)
if err != nil {
return nil, err
}
return b, nil
a = fallibleOperationA()
b = fallibleOperationB(a)
return b
return fallibleOperationA()
.then(a => fallibleOperationB(a))
.result()
.
, ( , ). . , . :
a, err := fallibleOperationA()
if err != nil {
return nil, err
}
if err := fallibleOperationB(a); err != nil {
return nil, err
}
c, err := fallibleOperationC(a)
if err != nil {
return nil, err
}
fallibleOperationD(a, c)
return fallibleOperationE()
- .