为什么我不喜欢去

您必须在当前工作中使用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()

- .

Source: https://habr.com/ru/post/zh-CN434446/


All Articles