Você precisa usar o Go no seu trabalho atual. Eu me familiarizei com esse idioma. Eu não gosto dele, e estou intrigado com sua popularidade.
Design ergonômicoNunca conheci um idioma tão oposto à conveniência do desenvolvedor. Por exemplo, Rob Pike tem sido repetida e abertamente hostil a qualquer discussão sobre destaque de sintaxe no
Go Playground . Em resposta a perguntas do usuário que eram razoavelmente redigidas, suas respostas públicas refletiram negligência e desrespeito:
O Gofmt foi escrito especificamente para reduzir o número de discussões sem sentido sobre formatação de código, que funcionou muito bem. Infelizmente, isso não afetou o número de discussões sem sentido sobre o destaque da sintaxe ou, como eu prefiro chamá-lo, spitzensparken blinkelichtzen.
E novamente na filial
Go-Nuts de 2012 :
Destaque de sintaxe - para os mais pequenos. Quando criança, aprendi aritmética em paus coloridos . Agora eu cresci e uso números em preto e branco.
Claramente, dos conhecidos de Rob, ninguém sofre de sinestesia, dislexia ou visão deficiente. Devido à sua posição, o site e a documentação oficiais do Go ainda não possuem destaque de sintaxe.
A equipe de desenvolvimento da Go não se limita a Pike, mas o restante apóia fortemente sua atitude em relação à ergonomia. Em uma discussão
sobre tipos de união / soma , ianlancetaylor rejeitou uma solicitação que definia especificamente a vantagem da ergonomia como sendo muito insignificante e não digna de atenção:
Isso foi discutido várias vezes no passado, inclusive antes do lançamento aberto. Então chegamos à conclusão de que os tipos de soma não estendem particularmente os tipos de interface. Se você observar, no final, tudo se resume ao fato de o compilador verificar se você preencheu todos os casos de alternância de tipos. Essa é uma vantagem muito pequena de mudar o idioma.
Essa atitude está em desacordo com os tipos de união em outros idiomas. Em 2000, a JWZ criticou o 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()
- .