Golang grupo de estudos

Exemplos, artigos e muito código Go

JSON Dicas e Truques

Convertendo e validando JSON É sempre bom saber se o JSON é valido antes, isso poupa tempo de debug procurando um problema que não esta no seu código, para isso uma boa ferramenta on-line é o JSONLint Outra ferramenta on-line muito boa é o JSON-to-Go para converter arquivos JSON em struct Go, ele não vai converter partes repetitivas em sub-structs mas ajuda muito, principalmente quando a estrutura é muito grande e complexa.

rclone o rsync para cloud storage

rclone é o rsync para a nuvem, para você mover arquivos usando vários providers como Dropbox, Amazon S3, DigitalOcean, Google Drive e muitos outros. E claro, escrito em go, pode ser instalado com um simples “go get”. Links mencionados, alguns foram mencionados fora da gravação: rclone Fonte do rclone no GitHub Repositório do nosso grupo E você encontra mais exemplos aqui Pagina do grupo de estudos Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack e procure por #brazil

Acessando Dropbox com Golang

Precisei criar um pacote Go para ao Dropbox e fazer algumas operações basicas, listar arquivos, upload e download, para isso usei o dropbox-sdk-go-unofficial. Conectando Dropbox Para conectar o dropbox precisamos das credenciais de acesso, a forma mais fácil é criar um token, para isso entre em Dropbox developers apps e crie uma aplicação, então dentro do painel da aplicação crie o token. Configurando o sistema Todas as funções precisam das configurações com as credenciais de acesso e outros parâmetros úteis como por exemplo o nível de log.

Postgresql com FUSE, Hangout do grupo de estudos de Go 2018-07-26

Hoje complementamos o grupo de estudos passado mostrando como montar um banco de dados Postgresql como sistema de arquivos. Links mencionados, alguns foram mencionados fora da gravação: Código fonte de hoje FUSE Filesystem in Userspace Repositório do FUSE Fuse for macOS Repositório do nosso grupo E você encontra mais exemplos aqui Pagina do grupo de estudos Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar [entre no canal de Go no slack https://invite.

Filesystem com FUSE, Hangout do grupo de estudos de Go 2018-07-12

Hoje demonstramos como criar um pequeno sistema de arquivos em userland e em modo somente leitura. Apesar do exemplo ser simples criar um sistema de arquivos é algo bem poderoso, imagine poder usar todas as ferramentas que você já esta acostumado como grep, find e outras para por exemplo procurar informações no seu banco de dados sem nem mesmo precisar de SQL :D Links mencionados, alguns foram mencionados fora da gravação:

Usando gofn para subir containers docker e rodar Clojure e Python

Como carregar containers Docker usando gofn Primeiro instanciamos a struct BuildOptions que vai informar para o gofn os detalhes do container como o nome da imagem por exemplo. buildOpts := &provision.BuildOptions{ ImageName: "nome da imagem aqui", StdIN: "o que você quer passar no stdin para o container aqui", DoNotUsePrefixImageName: true, } Depois instanciamos as opções do container por exemplo se você quer passar variáveis de ambiente.

Usando defer para mudar o valor de retorno

Hoje mostramos como usar o defer e alterar o valor de retorno de uma função. package main import ( "fmt" ) func processValue1(s string) (ret int) { for _, v := range s { if v != '0' { ret = (ret + 1) * 4 return } ret++ } ret = (ret + 1) * 4 return } func processValue2(s string) (ret int) { defer func() { ret = (ret + 1) * 4 }() for _, v := range s { if v !

O pacote termbox

Hoje mostramos um pequeno jogo feito estilo anos 80 para terminal usando o pacote termbox que ajuda muito na criação de aplicativos em modo texto. Também falamos sobre canais e como usar o comando select para fazer o loop de eventos do nosso jogo. Na parte “out of the records” falamos de retrocomputação, horta vertical, sistemas de irrigação robotizado e por ai vai. Links mencionados, alguns foram mencionados fora da gravação:

O pacote readline

Hoje falamos sobre o pacote readline, um pacote bem útil quando se quer receber entradas do usuário via linha de comando, por exemplo usamos readline para o REPL da Rumlang. Na parte “out of the records” falamos de tudo, desde a compra do GitHub pela Microsoft até criptomoedas e blockchain então se você esta assistindo isso pelo Youtube tente participar dos hangouts, tem muito mais coisas para você se divertir e aprender.

O pacote archiver

Nessa edição falamos do pacote archiver que é uma forma ferramenta muito simples para criar e extrair arquivos comprimidos de vários tipos diferentes e pode ser usado tanto como pacote dentro do seu programa como direto na linha de comando. Também falamos mais um pouco sobre testes e mostramos uma pequena armadilha que pode te poupar algum tempo depurando código. Links mencionados, alguns foram mencionados fora da gravação:

golang build tags

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Hoje falamos de como usar as build tags para fazer compilação condicional em golang. Links mencionados, alguns foram mencionados fora da gravação: Exemplo de build tags no grupo de estudos Documentação do pacote build Go advanced testing tips & tricks Using Go’s build constraint tag to help build mock services for service testing Repositório do nosso grupo E você encontra mais exemplos aqui Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack e procure por #brazil

json.Marshal

Algumas dicas rápidas para usar json.Marshal Os campos da struct que você quer colocar dentro do JSON, ou seja, “fazer o Marshal”, precisam ser declarados com a primeira letra maiúscula tornando esses campos públicos, caso contrário a função Marshal não consegue encontrar os campos. O retorno de json.Marshal é um array de bytes, para converter para string basta fazer cast (forçar a conversão) usando string(nomeDoVetor). É uma boa prática usar os nomes dos campos quando for popular a struct.

HasPrefix

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Pegando o começo de uma string com Go ou Python Awesome Go Código fonte do pacote strings Repositório do nosso grupo E você encontra mais exemplos aqui Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack e procure por #brazil

The Star Wars API

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: SWAPI: https://swapi.co A SWAPI client written in Go: https://github.com/peterhellberg/swapi JSON Server: https://github.com/typicode/json-server Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack https://invite.

Gerando posts do HUGO via Go

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Código do gerador de posts: https://github.com/go-br/sitegen curl-to-Go: https://mholt.github.io/curl-to-go/ JSON-to-Go: https://mholt.github.io/json-to-go/ Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack https://invite.slack.golangbridge.org/ e procure por #brazil

XML e Pizza

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Pizza De Dados http://pizzadedados.com Exemplo de XML do nosso grupo https://github.com/go-br/estudos/tree/master/xml Repositório do Ricardo https://github.com/chapzin/GoSped/blob/master/Model/NfeProc.go Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack https://invite.

XML

XML Este é um exemplo de como ler um feed RSS2 e interpretar o retorno para extrair os dados que queremos. Primeiro criamos as structs que vão conter os dados vindos do XML // RSS contem a base da estrutura do feed type RSS struct { XMLName xml.Name `xml:"rss"` Version string `xml:"version,attr"` Title string `xml:"channel>title"` Link string `xml:"channel>link"` Description string `xml:"channel>description"` PubDate string `xml:"channel>pubDate"` ItemList []Item `xml:"channel>item"` } // Item contem os posts no feed type Item struct { Title string `xml:"title"` Link string `xml:"link"` Description string `xml:"description"` Content string `xml:"encoded"` PubDate string `xml:"pubDate"` Comments string `xml:"comments"` } Então baixamos o feed da internet

Jupyter Notebook com Go

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Materia do Yu Watanabe: https://medium.com/@yunabe/interactive-go-programming-with-jupyter-93fbf089aff1 Repositório da Jessica com os arquivos do docker: https://github.com/jtemporal/jupytergo Exemplos usando Jupyter com Go https://github.com/jtemporal/lgo/tree/master/examples Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack https://invite.

Middleware

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Exemplo enviado pelo Felipe: https://play.golang.org/p/8SjYn-cisj Exemplo do servidor HTTPS com múltiplos domínios e múltiplas assinaturas: https://github.com/go-br/server Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br NATS - The Cloud Native Messaging System: https://github.com/nats-io https://github.com/nats-io/gnatsd gokrazy kernel+go para Raspberry Pi 3 https://gokrazy.

HTTPS com múltiplos domínios

Hangout do nosso grupo de estudos de Golang. Um papo bem legal sobre a linguagem que a gente adora. Links mencionados, alguns foram mencionados fora da gravação: Nosso domínio ainda sem nada la: https://gopher.pro.br Exemplo do servidor HTTPS com múltiplos domínios e múltiplas assinaturas: https://github.com/go-br/server Repositório do nosso grupo: https://github.com/go-br/estudos E você encontra mais exemplos aqui: https://github.com/go-br Nossos encontros ocorrem todas as quintas-feiras ás 22h00, para participar entre no canal de Go no slack https://invite.