Vou escrever o post para solidificar a dimensão do básico na minha cabeça.
Entender o básico de qualquer linguagem, framework, whatever na minha opinião é fundamental para que eu consiga me desenvolver no que estou tentando aprender.
Definir o básico já não é tão fácil.
Geralmente fico dias batendo em cima da documentação até perceber que alguns elementos estão sempre presentes. Só depois de adquirir essa percepção consigo começar a sacar o que é básico e essencial para que eu consiga, por exemplo, ler a documentação e produzir código sozinho.
Isso vai gerar uma série de posts, nesse vou me ater apenas a alguns aspectos como tipagem, interfaces públicas e structs.
Tipagem
Go é fortemente tipado, mas tem ducktype. Na minha opinião isso gera um pouco de confusão pois o ducktype só está disponível, digamos assim (disponível), na declaração de variáveis. Ou seja, métodos, "atributos" (entre aspas, ver structs), variáveis globais não tem ducktype.Vou exemplificar com a diferença entra uma declaração de uma variável global e uma local. Essa diferença se reflete na possibilidade da variável local permitir que o valor seja recebido utilizando o atalho ":=" vou exemplificar com algumas declarações diferentes.
No código acima declaramos uma constante WALTER fora da função main e declaramos uma variável longo dentro da função main, ambas são strings, mas a variável longo declaramos utilizando a forma curta :=. Já a constante precisamos declarar da forma convencional utilizando a paravra chave var seguindo pelo nome do elemento e o tipo, nessa ordem.
Getters
Elementos em letra maiúscula são públicos.Quando digo elementos estou me referindo a métodos e variáveis.
Eu particularmente gosto desse padrão, deixa claro o que é publico do que não é no código.
No site do Go tem um exemplo de "hello", que usa um método publico que começa com letra maiúscula (Println).
Structs
A definição de objeto do Go não tem a pegada tradicional que estamos acostumados com outras linguagens como PHP, Ruby ou Java.O recurso de linguagem disponível para tal é o strutct.
Struct é um tipo com campos definidos.
No código acima estamos definindo um struct Pessoa e dentro da função main estamos instanciando esse struct já atribuido valor aos atributos (exemplo p). Existem outras formas de se instanciar um struct, poderíamos ter utilizado a função new (exemplo p2). Para mais detalhes e exemplos mais ricos consulte a sessão Effective Go - Data
Conclusão
Go é uma linguagem fascinante e merece muita atenção. Eu estou no começo dessa jornada ainda, acredito que ao longos dos posts amadureça muita coisa e talvez até de uma editada nesse post, mas por enquanto isso é tudo que tenho a dizer sobre esses três aspectos.Pretendo falar na série Go Away sobre o esquema de múltiplos retornos, nomear parâmetros de retorno, erros (Panic, Recover, Defer), concorrência, interfaces, padrões, muita coisa! Recomendo para quem esteja começando que leia sobre a sintaxe, pratique com pequenos exemplos, e leia os exemplos feitos pela comunidade. Em falar de exemplos, esse site contem muitos bons Go By Example.
Só lembrando que minha única fonte de estudo foi a documentação oficial. Em especial Effective Go, dúvidas sobre padrões de nome, declaração de structs, como alocar dados, muita coisa sobre a forma Go de programar.
Para detalhes mais profundos sobre a linguagem consultei o Go Programming Language Specification.
Nos vemos no próximo!
Cheers!
Nenhum comentário:
Postar um comentário