Você está na página 1de 11

Caleb Doxsey

Novatec

Authorized Portuguese translation of the English edition of Introducing Go, ISBN 9781491941959 2016
Caleb Doxsey. This translation is published and sold by permission of O'Reilly Media, Inc., which owns
or controls all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls da obra Introducing Go, ISBN 9781491941959
2016 Caleb Doxsey. Esta traduo publicada e vendida com a permisso da O'Reilly Media, Inc.,
detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. 2016.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta
obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Lcia Kinoshita
Reviso gramatical: Smirna Cavalheiro
Assistente editorial: Priscila A. Yoshimatsu
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-489-2
Histrico de impresses:
Abril/2016

Primeira edio

Novatec Editora Ltda.


Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec

captulo 1

Iniciando

Go uma linguagem de programao de propsito geral, com recursos


avanados e uma sintaxe clara. Por causa de sua ampla disponibilidade em
vrias plataformas, sua biblioteca comum, robusta e bem-documentada e
seu foco em bons princpios de engenharia de software, Go uma tima
linguagem de programao para aprender.
Este livro no pressupe nenhum conhecimento prvio de Go, e tem o
propsito de servir como uma introduo fcil linguagem. Todos os
recursos essenciais da linguagem sero discutidos em captulos pequenos
e concisos que devero preparar voc para escrever programas reais em
Go e lidar com alguns dos recursos mais avanados disponveis para a
linguagem (documentao online, livros, palestras etc.).
Embora este livro seja adequado para programadores inexperientes, se
voc nunca programou antes, provvel que achar o material difcil demais para acompanhar. Voc poder se beneficiar ao consultar um recurso
mais genrico sobre programao antes de mergulhar neste material, mas,
para ser franco, a maioria dos alunos precisar de uma assistncia pessoal
e prtica, que poder ser encontrada em um ambiente de sala de aula ou
em sesses um a um com um desenvolvedor experiente.

Configurao do computador
Este livro contm muitos exemplos de cdigo e exerccios. Para obter
os melhores resultados possveis, tente executar esses exemplos em seu
prprio computador medida que avanar pelos captulos.
13

14

Introduo Linguagem Go

Porm, antes de escrever seu primeiro programa Go, h alguns itens que
voc dever configurar.

Editores de texto
Go uma linguagem bem sucinta e legvel, portanto, qualquer editor de
texto servir para editar arquivos. H plugins que acrescentam alguns
recursos teis (como preenchimento automtico e formatao ao salvar)
em muitos editores populares, mas esses plugins no so necessrios
para aprender a linguagem. Se voc no tiver certeza de qual editor deve
usar, recomendo o Atom do GitHub ele gratuito, adequado a diversas
plataformas e fcil de instalar a partir do site do Atom (https://atom.io/).

O terminal
Go uma linguagem compilada e, como muitas linguagens, faz uso intensivo da linha de comando. Se voc tem experincia anterior com uma
linguagem que faz a maior parte das tarefas em um IDE (como Java ou
C#), isso pode ser um pouco intimidador, mas, felizmente, as ferramentas de Go so bem fceis de usar. Como lembrete, eis o modo como voc
pode acessar o terminal:
Windows
No Windows, o terminal (tambm conhecido como prompt de comandos) pode ser ativado pressionando a tecla Windows + R (segure a
tecla Windows e ento pressione R), digitando cmd.exe e teclando Enter.
OS X
No OS X, o terminal pode ser acessado navegando para Finder
Applications Utilities Terminal (Finder Aplicativos Utilitrios
Terminal).

Captulo 1 Iniciando

15

Ambiente
Variveis de ambiente so um mecanismo oferecido pelo seu sistema
operacional para mudar o comportamento de um programa sem precisar
alter-lo. Um ambiente uma coleo dessas variveis, em que cada uma
tem um nome e um valor correspondente. Por exemplo, h uma varivel
de ambiente TEMP que armazena a localizao de um diretrio em seu
computador, no qual arquivos temporrios so armazenados.
O conjunto de ferramentas de Go utiliza uma varivel de ambiente chamada GOPATH para localizar cdigos-fonte de Go. Embora voc possa alterar
o GOPATH para qualquer valor que quiser, para facilitar, ns a definiremos
com o seu diretrio home:
Windows
No Windows, as informaes de usurio geralmente so armazenadas
em C:\Users\<USERNAME>, em que <USERNAME> substitudo pelo
seu nome de usurio (por exemplo, C:\Users\alice). O Windows tem uma
varivel de ambiente predefinida chamada USERPROFILE, que pode ser
usada para definir seu GOPATH.
Abra uma janela do terminal e digite o seguinte comando:
setx GOPATH %USERPROFILE%

Se voc estiver usando uma verso de Windows anterior ao Vista,


talvez esse comando no funcione, mas tambm possvel definir
variveis de ambiente navegando para Control Panel System Advanced
Environment Variables (Painel de Controle Sistema Avanado
Variveis de Ambiente).
OS X
No OS X, as informaes de usurio geralmente so armazenadas em
/Users/<USERNAME>, em que <USERNAME> substitudo pelo seu
nome de usurio (por exemplo, /Users/alice). No OS X, definiremos
GOPATH usando um arquivo especial de inicializao para o terminal,
chamado .bash_profile.
Abra um terminal e digite o comando a seguir:
echo 'export GOPATH=$HOME\n' >> ~/.bash_profile

16

Introduo Linguagem Go

Feche o terminal, abra-o novamente e digite o seguinte:


env

Entre vrias outras variveis de ambiente, voc dever ver uma entrada
para GOPATH.

Go
O nome Go refere-se tanto linguagem de programao quanto ao conjunto de ferramentas usado para construir e interagir com programas Go.
Antes de comear a trabalhar com Go, ser necessrio instalar o conjunto
de ferramentas de Go.
Faa download e execute o instalador para sua plataforma a partir de
golang.org/dl.
Para confirmar que tudo est funcionando, abra um terminal e digite:
go version

Voc dever ver o seguinte (seu nmero de verso e o sistema operacional


podem ser um pouco diferentes):
go version go1.5 windows/amd64

Se voc receber um erro sobre o comando no ser reconhecido, experimente reiniciar seu computador.
O conjunto de ferramentas de Go composto de vrios comandos e subcomandos diferentes. Voc pode obter uma lista desses comandos digitando:
go help

Com Go instalado e funcionando, voc ter tudo que necessrio para


escrever seu primeiro programa Go.

Seu primeiro programa


Tradicionalmente, o primeiro programa que voc escreve em qualquer
linguagem de programao se chama Hello, World um programa que
simplesmente exibe Hello, World em seu terminal. Vamos escrever um
programa desse tipo usando Go.

Captulo 1 Iniciando

17

Em primeiro lugar, crie uma nova pasta em que voc possa armazenar o programa Hello, World. Crie uma pasta chamada ~/src/golang-book/chapter1.
No terminal, voc pode fazer isso digitando os comandos a seguir:
No Windows
md src\golang-book\chapter1

No OS X
mkdir -p src/golang-book/chapter1

Abra seu editor de texto, crie um arquivo novo e insira o seguinte:


package main
import "fmt"
// isto um comentrio
func main() {
fmt.Println("Hello, World")
}

Certifique-se de que seu arquivo seja idntico ao que foi mostrado aqui
e salve-o como main.go na pasta que acabamos de criar. Abra um novo
terminal e digite o seguinte:
cd src/golang-book/chapter1
go run main.go

Voc dever ver Hello, World ser exibido em seu terminal. O comando
go run toma os arquivos subsequentes (separados por espaos), compila-os gerando um executvel, salva-o em um diretrio temporrio e ento
executa o programa. Se voc no vir Hello, World ser exibido, talvez tenha
cometido um erro ao digitar o programa. O compilador de Go fornecer
pistas sobre o local em que o erro se encontra. Como a maioria dos compiladores, o compilador de Go extremamente detalhista e no tolera erros.

18

Introduo Linguagem Go

Como ler um programa Go


Vamos analisar este programa com mais detalhes:
package main
import "fmt"
// isto um comentrio
func main() {
fmt.Println("Hello, World")
}

Os programas Go so lidos de cima para baixo e da esquerda para a


direita (como um livro). A primeira linha contm o seguinte:
package main

Isso conhecido como declarao de pacote, e todo programa Go deve


comear com ela. Pacotes so a maneira de Go organizar e reutilizar cdigo. H dois tipos de programas Go: executveis e bibliotecas. Aplicaes
executveis so os tipos de programa que podemos executar diretamente
do terminal (no Windows, eles terminam com .exe). Bibliotecas so colees de cdigo que empacotamos em conjunto para que elas possam
ser usadas em outros programas. Exploraremos as bibliotecas com mais
detalhes posteriormente; por enquanto, lembre-se de incluir essa linha
em qualquer programa que voc escrever.
A prxima linha uma linha em branco. Os computadores representam
quebras de linha com um caractere especial (ou com vrios caracteres).
Quebras de linha, espaos e tabulaes so conhecidos como espaos em
branco (porque no podemos v-los). Geralmente, Go no se preocupa
com espaos em branco eles so usados para deixar os programas mais
legveis (voc poderia remover essa linha e o programa se comportaria
exatamente da mesma maneira).
Na prxima linha, vemos o seguinte:
import "fmt"

Captulo 1 Iniciando

19

A palavra reservada import o modo de incluir cdigo de outros pacotes


para que sejam usados em nosso programa. O pacote fmt (abreviatura de
format) implementa formatao de entrada e sada. Considerando o que
acabamos de aprender sobre os pacotes, o que voc acha que os arquivos
do pacote fmt contm no incio?1
Observe que fmt est entre aspas duplas. O uso de aspas duplas como
essas conhecido como uma string literal, que um tipo de expresso. Em
Go, strings representam uma sequncia de caracteres (letras, nmeros,
smbolos etc.) de tamanho definido. As strings sero descritas com mais
detalhes no prximo captulo, mas, por enquanto, o aspecto importante
a se ter em mente que um caractere " de abertura deve ser seguido posteriormente por um caractere " de fechamento, e tudo que estiver entre
eles estar includo na string (o caractere " em si no faz parte da string).
A linha que comea com // conhecida como comentrio. Os comentrios
so ignorados pelo compilador de Go e esto l para facilitar sua vida (ou
a vida de quem v ler o cdigo-fonte do programa). Go aceita dois estilos
diferentes de comentrio: comentrios //, em que todo o texto entre //
e o final da linha faz parte do comentrio, e comentrios /* */, em que
tudo que estiver entre os asteriscos faz parte dos comentrios (vrias
linhas podem ser includas).
Depois disso, vemos uma declarao de funo:
func main() {
fmt.Println("Hello, World")
}

As funes so os blocos de construo de um programa Go. Elas tm


entradas, sadas e uma srie de passos conhecidos como instrues, que
so executados em sequncia. Todas as funes comeam com a palavra
reservada func, seguida do nome da funo (main, nesse caso), uma lista
de zero ou mais parmetros entre parnteses, um tipo de retorno opcional
e um corpo entre chaves. Essa funo no tem parmetros, no devolve
nada e tem apenas uma instruo. O nome main especial porque a
funo chamada quando o programa executado.
1 Arquivos do pacote fmt comeam com package fmt.

20

Introduo Linguagem Go

A ltima parte de nosso programa constituda desta linha:


fmt.Println("Hello, World")

Essa instruo composta de trs partes. Em primeiro lugar, acessamos


outra funo chamada Println do pacote fmt ( a parte correspondente
a fmt.Println); Println quer dizer "print line". Em seguida, criamos uma
nova string, que contm Hello, World e chamamos (tambm dizemos que
invocamos ou executamos) essa funo, com a string como o primeiro e
nico argumento.
A essa altura, voc j conheceu muita terminologia nova. s vezes, ler
seu programa deliberadamente em voz alta pode ajudar. Uma leitura do
programa que acabamos de escrever poderia ser feita assim:
Cria um novo programa executvel que referencia a biblioteca fmt e
contm uma funo chamada main. Essa funo no aceita nenhum
argumento e no devolve nada. Ela acessa a funo Println contida no
pacote fmt e a chama com um argumento a string Hello, World.

A funo Println faz o verdadeiro trabalho desse programa. Voc pode


saber mais sobre essa funo digitando o seguinte em seu terminal:
godoc fmt Println

Entre outras informaes, voc dever ver a sada mostrada na Figura 1.1.

Figura 1.1 Sada de godoc fmt Println.

Captulo 1 Iniciando

21

Println formata usando os formatos-padro de seus operandos e escreve


na sada-padro. Espaos so sempre adicionados entre os operandos
e uma quebra de linha concatenada. Ela devolve o nmero de bytes
escritos e qualquer erro de escrita encontrado.
Go uma linguagem de programao muito bem documentada, porm,
essa documentao pode ser difcil de entender, a menos que voc j tenha
familiaridade com linguagens de programao. Apesar disso, o comando
godoc extremamente til e um bom lugar para comear sempre que
voc tiver uma dvida.
De volta funo em questo, essa documentao informa que a funo Println enviar qualquer informao que voc lhe passar para a
sada-padro (ou seja, a sada do terminal em que voc est trabalhando).
essa funo que faz Hello, World ser exibido.
No prximo captulo, conheceremos os tipos ao explorar o modo como
Go armazena e representa dados como Hello, World.

Exerccios
1. O que um espao em branco?
2. O que um comentrio? Quais so as duas maneiras de escrever
um comentrio?
3. Nosso programa comeou com package main. Os arquivos do pacote
fmt devem comear com qual instruo?
4. Usamos a funo Println definida no pacote fmt. Se quisssemos
usar a funo Exit do pacote os, o que voc deveria fazer?
5. Modifique o programa que escrevemos de modo que, em vez de
exibir Hello, World, ele apresente Hello, my name is, seguido de seu
nome.