Este repositório contém conteúdos e ferramentas de build para o site Go Em Exemplos, um site que ensina Go com exemplos comentados.
O site Go Em Exemplos é construído extraindo o código e os
comentários dos arquivos no diretório examples
e, utilizando
como base os templates
, cria uma versão estática no
diretório public
.
Os programas utilizados para este processo de construção podem
ser encontrados no diretório tools
, juntamente com as dependências
especificadas no arquivo go.mod
.
O diretório public
pode ser servido por qualquer sistema
de conteúdo estático.
O site de produção do Gobyexample.com,
por exemplo, utiliza S3 e CloudFront. A versão em Português
Brasileiro é servida pelo Github Pages.
Para realizar o build do site, é necessário ter Go instalado. Execute:
$ tools/build
Ou para realizar o build continuamente em um loop:
$ tools/build-loop
Para hospedar o site localmente:
$ tools/serve
É possível acessar pela porta 8000 (http://127.0.0.1:8000/
) no navegador.
Para fazer upload do site utilizando AWS:
$ export AWS_ACCESS_KEY_ID=...
$ export AWS_SECRET_ACCESS_KEY=...
$ tools/upload
O copyright pertence ao Mark McGranaghan e seu uso está licenciado sob a Creative Commons Attribution 3.0 Unported License.
O copyright do mascote Gopher pertence ao Renée French e está licenciado sob a Creative Commons Attribution 3.0 Unported License.
Traduções dos contribuidores do GoByExample estão disponíveis em:
- Chinês por gobyexample-cn
- Tcheco por martinkunc
- Francês by keirua
- Italiano pela comunidade Go Italian
- Japonês por spinute
- Coreano por mingrammer
- Russo por badkaktus
- Espanhol pela comunidade Go Mexico
- Ucraniano por butuzov
- Português Brasileiro por lcslitx
Agradecimento ao Jeremy Ashkenas pelo Docco, que inspirou este projeto.
Ficamos felizes em corrigir problemas e aceitar contribuições! Por favor, submeta um
issue ou envie uma Pull Request.
Leia o arquivo CONTRIBUINDO.md
para mais detalhes.
Graças à retrocompatibilidade da linguagem Go, é esperado que a grande maioria dos exemplos funcinoem nas versões mais recentes de Go, bem como nas versões menos atualizadas.
Considerando isto, alguns exemplos demonstram recursos recém implementados; portanto, é recomendado executar com as versões oficiais mais recentes. (Veja o histórico de releases para mais detalhes).
Alguns dos exemplos demonstram execução de código concorrente, o qual tem uma ordem de execução não determinística. Tudo depende de como a Execução (runtime) do Go organiza as goroutines. Isto pode depender do Sistema operacional, arquitetura do CPU e até de versão de Go.
De maneira similar, exemplos que iteram sobre maps podem produzir itens em ordens diferentes da que se está obtendo na sua máquina. Isto acontece porque a ordem de iteração nos maps de Go não são específicas e não tem garantia de serem iguais às iterações anteriores ou posteriores.
Isto não significa que há algo de errado com o exemplo. Tipicamente, o código neste exemplos não são sensíveis à ordem do output; se o código é sensível à essa ordem, provavelmente trata-se de um bug, então sinta-se livre para reportar.