Um Tutorial para a Linguagem de Programação Go – parte 1
Olá.
Continuando com o trabalho de desbravar/divulgar/estudar a linguagem de programação Go, começo a disponibilizar a partir de agora, a minha tradução do documento A Tutorial for the Go Programming Language, disponível (em inglês) no site The Go Programming Language.
Vou disponibilizar em partes, de modo que não seja necessário que você espere toda a tradução ficar pronta para ir estudando. Acrescentei algumas notas minhas (N.T.) para complementos de informações que achei necessários.
Espero que este documento seja útil, e conto com a sua colaboração para eventuais correções ou acréscimos que julgue necessários.
Um Tutorial para a Linguagem de Programação Go
<!– Let’s Go –>
- Introdução
- Alô, mundo
- Compilando
- Echo
- Um Interlúdio sobre Tipos
- Um Interlúdio sobre Alocação
- Um Interlúdio sobre Constantes
- Uma Package para I/O (entrada e saída)
- Gatos Podres
- Ordenação
- Impressão
- Números primos
- Multiplexação
Introdução
Este documento é um tutorial introdutório às noções básicas da liguagem de programação Go,
destinado a programadores familiarizados com C ou C++. Não é um guia abrangente para a linguagem; no
momento o documento que mais se aproxima disso é a Especificação da Linguagem (em inglês).
Depois que tiver lido este tutorial, você pode querer dar uma olhada no documento Effective Go que estuda em profundidade a utilização da linguagem.
Slides de um curso de 3 dias sobre Go também estão disponíveis: Dia 1, Dia 2, Dia 3 (em inglês).
A apresentação aqui segue através de uma série de pequenos programas para ilustrar
características-chave da linguagem. Todos os funcionam (quando foram escritos) e estão
disponíveis no repositório, no diretório doc/progs (~/go/doc/progs).
Trechos de programas são transcritos com os números de linhas correspondentes ao arquivo original; para limpeza, linhas em branco permanecem em branco.
Alô, mundo
Vamos começar da forma tradicional:
package main
import fmt "fmt" // Package implementando entrada/saída de dados formatada
func main() {
fmt.Printf("Alô, mundo\n");
}
Todo código-fonte Go, define através de uma declaração package, a qual pacote (package) ele pertence.
Ele também importa outras packages para dispor de suas facilidades.
Este programa importa a package “fmt” para ter acesso a nossa velha, agora capitalizada (com a primeira letra maiúscula) e “package-qualified” (com uma chamada qualificada – identificando a package a que pertence), amiga, “fmt.Printf“.
Funções são introduzidas com a palavra chave “func”.
A função “main” da package “main” é onde o programa começa a rodar (depois de qualquer inicialização).
Constantes strings pode conter caracteres Unicode, codificados em UTF-8. (Na verdade, arquvos-fonte Go são definidos para ser codificados em UTF-8).
N.T. No arquivo original correspondente a este tutorial, a string impressa contém a string “Alô, mundo” em outras línguas, o que fizerem para demonstrar a capacidade de Go manipular caracteres UTF-8.
A convenção de comentários é a mesma de C++:
/* ... */
// ...
Mais tarde, teremos muito mais a dizer sobre impressão.
Compilando
Go é uma linguagem compilada. No momento, existem dois compiladores.
Gccgo é o compilador que usa o back end do GCC. Existe também uma suite de compiladores com
diferentes (e estranhos) nomes para cada arquitetura: “6g” para x86 de 64 bits, “8g” para x86 de 32 bits
e mais. Estes compiladores rodam significativamente mais rápido mas geram código menos eficiente que “gccgo”.
No momento da escrita deste documento (novembro/2009), eles também têm um sistema de tempo de execução mais robusto, embora “gccgo” os esteja alcançando.
Aqui está como compilar e executar nosso programa. Com “6g”:
$ 6g helloworld.go # compila; código objeto salvo em helloworld.6
$ 6l helloworld.6 # "linka"; saida vai para 6.out
$ ./6.out # Executa
Alô, mundo
$
N.T. – Observe que caso esteja utilizando uma máquina de 32 bits, ao invés de 6g e 6l, você deverá utilizar 6g e 8l.
O arquivo binário executável pode ser especificado pelo argumento -o do comando 6l (ou 8l), da seguinte forma:
$ 6l -o helloworld helloworld.6 # "linka"; saida vai para helloworld
Dessa forma, o executável gerado se chamará helloworld, ao invés de 6.out
Com “gccgo” a coisa parece um pouco mais tradicional:
$ gccgo helloworld.go
$ ./a.out
Alô, mundo
$
N.T. – Com a utilização do gccgo, o arquivo binário executável gerado, tem por default o nome a.out (como no gcc). Podemos especificar um nome diferente pelo argumento -o:
$ gccgo -o helloworld helloworld.go
$ ./helloworld
Alô, mundo
$
Para instruções sobre a instalação do gccgo, acesse o Post Instalando gccgo no Ubuntu neste Blog.
Abraço

[...] O comando import é na verdade uma declaração: em sua forma geral, como usada em nosso programa “Alô, mundo”, ele (o import) declara o identificador fmt que será usado para acessar membros da package [...]
[...] [Voltar ao menu] [...]
[...] [Voltar ao menu] [...]
[...] [Voltar ao menu] [...]
[...] [Voltar ao menu] [...]
opa! está fazendo um ótimo trabalho. vou acompanhar as postagens sobre o GO, preciso do conteúdo para realizar um trabalho e é de grande ajuda achar este tutorial da forma que o está fazendo traduzindo/comentado.
Obrigado.
Parabéns cara, seu blog é muito foda, massa!
Obrigado por compartilhar conhecimento conosco, que Deus te abençoe!!
Abração, continua assim!