Tutorial

Como escrever seu primeiro programa em Go

Published on February 13, 2020
Português
Como escrever seu primeiro programa em Go

Introdução

O programa “Hello, World!” é um clássico tradicional, consagrado pelo tempo em programação de computadores. É um programa inicial, simples e completo para iniciantes e é uma boa maneira de garantir que seu ambiente esteja devidamente configurado.

Este tutorial explicará sobre como criar esse programa em Go. No entanto, para tornar o programa mais interessante, você vai modificar o programa tradicional “Hello, World!” para que ele pergunte ao usuário pelo seu nome. Então, o nome será utilizado na saudação. Quando terminar com o tutorial, você terá um programa que se parece com este quando executá-lo:

Output
Please enter your name. Sammy Hello, Sammy! I'm Go!

Pré-requisitos

Antes de iniciar este tutorial, você vai precisar de um ambiente local de desenvolvimento em Go configurado em seu computador. Para configurar um ambiente de desenvolvimento local em Go, você pode seguir um destes tutoriais:

Passo 1 — Escrevendo o programa básico “Hello, World!”

Para escrever o programa “Hello, World!” , abra um editor de texto de linha de comando como o nano e crie um novo arquivo:

  1. nano hello.go

Assim que o arquivo de texto se abrir na janela do terminal, você digitará o seu programa:

hello.go
package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

Vamos desdobrar os diferentes componentes do código.

package é uma palavra-chave da linguagem Go que define a qual pacote de código esse arquivo pertence. Só pode haver um pacote por pasta e cada arquivo .go deve declarar o mesmo nome de pacote no topo de seu arquivo. Neste exemplo, o código pertence ao pacote main.

import é uma palavra-chave da linguagem Go que diz ao compilador de Go quais outros pacotes você quer usar neste arquivo. Aqui, você importará o pacote fmt que vem com a biblioteca padrão. O pacote fmt fornece funções de formatação e impressão que podem ser úteis durante o desenvolvimento.

A fmt.PrintIn é uma função da linguagem Go, encontrada no pacote fmt, que diz ao computador para imprimir um texto na tela.

A função fmt.Println vem seguida por uma sequência de caracteres, como "Hello, World!", entre aspas. Quaisquer caracteres que estiverem entre aspas são chamados de string. A função fmt.Println imprimirá essa string na tela quando o programa for executado.

Salve e saia do nano, digitando CTRL + X e, quando for solicitado a salvar o arquivo, pressione Y.

Agora, você pode testar seu programa.

Passo 2 — Executando um programa em Go

Com seu programa “Hello, World!” escrito, você está pronto para executar o programa. Você usará o comando go, seguido do nome do arquivo que você acabou de criar.

  1. go run hello.go

O programa será executado e exibirá este resultado:

Output
Hello, World!

Vamos explorar o que realmente aconteceu.

Os programas em Go precisam compilar antes de serem executados. Quando você chama go run com o nome de um arquivo, neste caso hello.go, o comando go compilará o aplicativo e executará o binário resultante. Para os programas escritos em linguagens de programação compiladas, um compilador receberá o código fonte de um programa e gerará outro tipo de código de nível inferior (como um código de máquina) para produzir um programa executável.

Os aplicativos em Go requerem um pacote main e exatamente uma função main(), que serve como ponto de entrada para o aplicativo. A função main não recebe argumentos e não retorna valores. Em vez disso, ela diz ao compilador de Go que o pacote deve ser compilado como um pacote executável.

Uma vez compilado, o código é executado ao inserirmos a função main() no pacote main. Ele executa a linha fmt.Println("Hello, World!") ao chamar a função fmt.Println. O valor da string Hello, World! é enviado, em seguida, para a função. Neste exemplo, a string Hello, World! é também chamada de um argumento, uma vez que é um valor que é enviado para um método.

As aspas que estão em ambos os lados do Hello, World! não são impressas na tela porque você as utiliza para dizer ao Go onde sua string começa e onde termina.

Neste passo, você criou um programa funcional “Hello, World!” com o Go. No passo a seguir, você explorará como tornar o programa mais interativo.

Passo 3 — Solicitando entrada do usuário

Toda vez que você executa seu programa, ele produz o mesmo resultado. Neste passo, você poderá adicionar ao seu programa a solicitação de nome para o usuário. Então, seu nome será utilizado na saída.

Em vez de modificar seu programa já existente, crie um novo programa chamado greeting.go com o editor nano:

  1. nano greeting.go

Primeiro, adicione este código, que solicita que o usuário digite seu nome:

greeting.go
package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
}

Novamente, você usa a função fmt.Println para imprimir algum texto na tela.

Agora, adicione a linha destacada para armazenar a entrada do usuário:

greeting.go
package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
}

A linha var name string criará uma nova variável usando a palavra-chave var. Nomeie a variável de name e ela será do tipo string.

Então, adicione a linha destacada para capturar a entrada do usuário:

greeting.go
package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
  fmt.Scanln(&name)
}

O método fmt.Scanln diz ao computador para esperar o términdo da entrada do teclado com uma nova linha ou caractere (\n). Isso pausa o programa, permitindo que o usuário digite qualquer texto que quiser. O programa continuará quando o usuário pressionar a tecla ENTER em seu teclado. Todos as teclas pressionadas, incluindo a tecla ENTER, são então capturadas e convertidas em uma string de caracteres.

Você quer usar esses caracteres na saída do seu programa, então salve esses caracteres,* escrevendo*-os na variável string chamada name. O Go armazena aquela string na memória do seu computador até que o programa termine de executar.

Por fim, adicione a seguinte linha destacada em seu programa para que imprima o resultado:

greeting.go
package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
  fmt.Scanln(&name)
  fmt.Printf("Hi, %s! I'm Go!", name)
}

Desta vez, em vez de usar o método fmt.Println novamente, você estará usando o fmt.Printf. A função fmt.Printf recebe uma string e, fazendo uso de verbos especiais de impressão, (%s), ela injeta o valor de name na string. Faça isso porque o Go não oferece suporte à interpolação de strings, o que deixaria que você levasse o valor atribuído até uma variável e o colocasse dentro de uma string.

Salve e saia do nano, pressionando CTRL + X e pressione Y quando solicitado a salvar o arquivo.

Agora, execute o programa. Você será solicitado a colocar seu nome; assim, digite-o e pressione ENTER. O resultado pode não ser exatamente o que você espera:

Output
Please enter your name. Sammy Hi, Sammy ! I'm Go!

Em vez de Hi, Sammy! I'm Go!, há uma linha de quebra logo após o nome.

O programa capturou todas as teclas que pressionamos, incluindo a tecla ENTER que pressionamos para dizer ao programa para continuar. Em uma string, pressionar a tecla ENTER cria um caractere especial que cria uma nova linha. O resultado do programa está fazendo exatamente o que lhe foi solicitado; está exibindo o texto que você digitou, incluindo essa nova linha. Não é o resultado que você esperava ver, mas você pode corrigi-lo com funções adicionais.

Abra o arquivo greeting.go no seu editor:

  1. nano greeting.go

Localize esta linha em seu programa:

greeting.go
...
fmt.Scanln(&name)
...

Adicione a linha a seguir logo após a linha anterior:

greeting.go
name = strings.TrimSpace(name)

Esse arquivo utiliza a função TrimSpace - do pacote de strings da biblioteca padrão de Go - na string que você capturou com a fmt.Scanln. A função strings.TrimSpace remove todos os caracteres de espaço, incluindo novas linhas - do início e do final de uma string. Neste caso, ela remove o caractere da nova linha ao final da string criada quando o ENTER tiver sido pressionado.

Para usar o pacote strings, você precisa importá-lo no topo do programa.

Localize estas linhas em seu programa:

greeting.go
import (
	"fmt"
)

Adicione a seguinte linha para importar o pacote strings:

greeting.go
import (
	"fmt"
  "strings"
)

Seu programa agora terá o seguinte:

greeting.go
package main

import (
		"fmt"
		"strings"
)

func main() {
	fmt.Println("Please enter your name.")
	var name string
	fmt.Scanln(&name)
	fmt.Printf("Hi, %s! I'm Go!", name)
	name = strings.TrimSpace(name)
}

Salve e saia do nano. Pressione CTRL + X e, em seguida, pressione Y quando for solicitado a salvar o arquivo.

Execute o programa novamente:

  1. go run greeting.go

Desta vez, após digitar seu nome e pressionar ENTER, você receberá o resultado esperado:

Output
Please enter your name. Sammy Hi, Sammy! I'm Go!

Agora, você tem um programa Go que recebe a entrada de um usuário e a imprime de volta na tela.

Conclusão

Neste tutorial, você escreveu um programa “Hello, World!” que recebe a entrada de um usuário, processa os resultados e exibe o resultado. Agora que você tem um programa básico com o qual trabalhar, tente expandi-lo ainda mais. Por exemplo, pergunte a cor favorita do usuário e faça o programa dizer que sua cor favorita é vermelho. Você pode até tentar usar essa mesma técnica para criar um programa Mad-Lib simples.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel