Golang grupo de estudos

Exemplos, artigos e muito código Go

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.

Errors

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: Errors: https://golang.org/pkg/errors/ Ferramenta de geração de documentação para API https://apiary.io http://dredd.io/en/latest/ 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: Repositório do nosso grupo: https://github.

Linguagens

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: Beerwar: https://github.com/avelino/beerwar 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: RealTimeBattle: http://realtimebattle.sourceforge.net/ Should I Rust, or Should I Go: https://codeburst.io/should-i-rust-or-should-i-go-59a298e00ea9 Unity 3d: https://unity3d.

Queue

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: Exemplos de fila: https://github.com/go-br/queue beanstalk: github.com/kr/beanstalk Essa é a versão do package que estamos mantendo: github.com/nuveo/beanstalk Event Service Specification: https://www.omg.org/spec/EVNT/1.2/PDF 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.

Go English

Go English Go English é a versão em Go do zzenglish. Funções ZZ é um conjunto dos mais variados aplicativos, escritos em shell script, com as mais variadas aplicações. Dentre eles, o zzenglish, objeto deste estudo. O ZZEnglish Abaixo, temos a codificação original, do miniaplicativo. zzenglish () { zzzz -h english "$1" && return test -n "$1" || { zztool -e uso english; return 1; } local cinza verde amarelo fecha local url="http://www.

HTTP Server

HTTP Server Este é um pequeno servidor HTTP usado para testes de clientes. Ele abre a porta 8080 e ecoa tudo que for enviado para ele via terminal. Para executar basta go get ./... go run main.go Se quiser ver um exemplo um pouco mais avançado usando HTTPS e servindo múltiplos domínios vá para go-br/server Arquivos desse post: server/README.md server/main.go

Storing

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: Women Who Go Sampa: https://www.meetup.com/Women-Who-Go-Sampa/ Apply functional options pattern based on: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis Storing: https://github.com/nuveo/storing Novo 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.