Hugo Rodrigues
Especial para Include[SI]
Até então, Go me parece uma mistura de tudo que há de bom em várias linguagens de programação anteriores. Dentro do meu breve estudo, me deparei com características que nunca esperaria encontrar em uma linguagem compilada. São muitas as surpresas: closures, lambdas, duck typing, suporte ao paradigma funcional, interfaces… Neste artigo, não pretendo abordar a linguagem como um todo, nem ao menos te deixar apto a programar em Go. Quero apenas apresentar e deixar vocês com vontade de ir aprender também. Comecemos com um programa bem complexo que vocês devem conhecer: o Hello World (ou Alô mundo)!
1 2 3 4 5 6 7 |
package main import “fmt” func main() { fmt.Println(“Hello World!") } |
Todos os programas Go devem ficar dentro de um package. Caso o programa seja um executável, ele deve estar em um package main. Os packages constituem uma ferramenta muito poderosa no desenvolvimento, de forma fácil, de plugins ou bibliotecas, pesquisem!
1 |
'import "fmt"': |
1 |
func main: |
Todo arquivo Go executável deve conter uma função main, assim como em C.
E aí, estão gostando? Vamos partir pra orientação a objetos? Vamos! Só tem um problema: Não existe orientação a objetos em GO!
COMO ASSIM “NÃO EXISTE ORIENTAÇÃO A OBJETOS EM GO”?
Calma, calma… Deixa eu explicar: uma definição de classe geralmente aceita é que são estruturas que tem atributos e comportamentos. Em Go não existe o conceito de classes. Ao invés disso, voltamos àquele velho conceito básico de Struct (lembram de C?), no qual é possível declarar um novo tipo que comporta vários atributos (foi a primeira metade). Mas e os métodos? Funções em Go são extremamente flexíveis. Uma das formas de se declarar um método é com uma função que tem como receptor uma estrutura! Não entendeu? Vejamos:
1 2 3 4 5 |
type MinhaQuaseClasse struct{ atributo1 int atributo2 string atributo3 float64 } |
Nesse trecho de código é definido um Struct (repare que o tipo da variavel vem depois do nome) onde são especificados apenas os atributos da nossa “classe”, e novamente a pergunta: mas e os métodos???
1 2 3 |
func (variavel MinhaQuaseClasse) MetodoDaQuaseClasse() { // corpo da funcao } |
Funções em Go são definidas com a palavra chave “func”. Reparem que ainda antes do nome da função eu tenho o meu receptor (o Struct que recebe o meu método), que, no caso, é o que acabamos de criar. Desta forma é feito um método.
Gostaram? Acharam estranho? É realmente estranho pra nós da “geração orientada a objetos” (poético). Mas garanto que Go é uma linguagem extremamente poderosa, rápida, funcional (algo que não abordamos aqui) e de fácil leitura e integração (e ainda tem um mascote muito fofinho :3)!
MAIS>> O site oficial da linguaguem é https://golang.org/