Back-End

8 dez, 2014

5 coisas que você provavelmente não conhece em Go

Publicidade

Provavelmente você já deve ter ouvido falar sobre Go. Golang (ou apenas Go); é uma linguagem de programação criada por funcionários do Google e foi lançada em código livre em novembro de 2009. Ela é uma linguagem compilada e com característica de programação concorrente. O projeto inicial da linguagem foi feito em setembro de 2007 por Robert GriesemerRob Pike e Ken Thompson.

A história conta que o trio que possuía mais de 30 anos de experiência com C, se encontrava descontente com as linguagens existentes e buscaram criar uma linguagem de programação que saciasse seus desejos. Acabou sendo considerada por muitos como a linguagem sucessora do C.

A verdade é que este artigo é uma pequena desculpa para apresentar e te instigar a brincar ou considerar o uso de Go. A linguagem é extremamente amigável, de fácil aprendizado e leitura. Apresenta também tempos curtos de compilação que são úteis para grandes projetos. Se você não conhece e tem interesse em aprender sobre a linguagem, recomendo visitar o site oficial, lá tem toda documentação, artigos sobre a linguagem, guide para instalação e outros…

Para este artigo, considere a versão atual da linguagem como 1.3.1, pois com o tempo muitas características e propriedades podem ter sido removidas ou melhoradas.

Aqui vão 5 coisas simples, mas que pouca gente sabe sobre o Go.

1. Toda documentação é acessível pela linha de comando

Isso é possível graças ao GoDoc, um projeto criado pelos desenvolvedores e mantenedores da linguagem, onde tem toda a documentação de Go e dos pacotes mais populares.

Você consegue acessá-lo pelo terminal, instalando a aplicação ou até mesmo acessar por HTTP para gerar o plain text de todos os dados ou realizar um query sobre ele.

Exemplo de busca usando HTTP:

$ curl -H 'Accept: text/plain' http://godoc.org/?q=sql

2. Nested structs

Nested structs são estrutura(s) escritas dentro de outra estrutura. Para um melhor entendimento, veja o funcionamento em JSON:

{"data": 
   {"children": [   
	 {
	    "data": {     
      	    "title": "The Go homepage",     
          "url":   "http://golang.org/"   }},
...
]}}

Agora em Go, usamos structs. Característica herdada do C:

type Item struct {     
	Title string     
	URL   string 
}  

type Response struct {     
	Data struct {         
		Children []struct {             
			Data Item         
		}     
	} 
}

3. go get suporta custom domains

Sim! Nas versões anteriores você podia rodar um go remote help para verificar isso. Com a versão atual já é algo natural. Se quiser confirmar, rode:

$ go get camlistore.org/pkg/netutil

4. Enviar e receber em uma mesma channel

Em Go, você consegue enviar uma estrutura channel de um contexto para outro sem precisar mudar ou aplicar o escopo da estrutura como global.

código

5. Mock do sistema de arquivos

Seu pacote usa e trabalha com sistema de arquivos, porém você não quer que seus testes usem o disco. É possível ”mockar” esses arquivos criando uma interface. Se preferir, também é possível realizar testes usando fixtures.

Se perdeu no significado de Mock? Objetos Mock são objetos que simulam o comportamento de objetos reais de forma controlada. São normalmente criados para testar o comportamento de outros objetos.

código1

6. O verdadeiro nome do mascote

mascote

 

Este artigo foi baseado em “10 things you (probably) don’t know about Go