
Extensões Visual Studio Code para o dia a dia
Segue uma lista das extensões que mais utilizo em meu dia a dia como desenvolvedor quando uso o editor VisualStudio... Leia mais
Desenvolvedor de Software
Se você está começando a aprender Go e quer fazer algo prático, vou te mostrar como criar uma aplicação básica que permite incluir, editar, listar e remover pessoas. O objetivo aqui é aprender de uma forma leve.
Os dados serão salvos em memória e futuramente vamos evoluir nossa aplicação para fazer de um banco de dados.
Vamos dividir este tutorial em partes para que você entenda cada detalhe do código. Bora lá!
Primeiro, você vai precisar ter o Go instalado no seu computador. Se ainda não tiver, é só acessar aqui e seguir as instruções. Beleza, depois de instalado, crie um arquivo chamado main.go
e adicione o seguinte código básico para o nosso menu interativo.
A primeira coisa que vamos fazer é definir uma estrutura (struct
) para armazenar as informações das pessoas que queremos manipular. Vamos ter dados como nome, idade, e-mail, telefone e endereço.
package main
import (
"fmt"
)
type Pessoa struct {
nome string
idade int
email string
dadosPessoais map[string]DadosPessoais
}
type DadosPessoais struct {
telefone string
endereco string
}
Aqui temos duas structs:
Pessoa
: que guarda o nome, idade, e-mail e um map de DadosPessoais
.DadosPessoais
: que guarda o telefone e o endereço.Agora, o mais legal: vamos construir um menu interativo para adicionar, editar, listar e remover essas pessoas.
Um menu em Go nada mais é do que uma série de opções que o usuário pode escolher. Vamos usar um loop for
para que ele fique rodando até o usuário escolher sair. Vamos usar um switch
para tratar as opções.
Adicione o código abaixo dentro da função main
:
func main() {
for {
exibirMenu()
var opcao int
fmt.Print("Escolha uma opção: ")
fmt.Scanln(&opcao)
switch opcao {
case 1:
incluirPessoa()
case 2:
editarPessoa()
case 3:
listarPessoas()
case 4:
removerPessoa()
case 5:
fmt.Println("Saindo...")
return
default:
fmt.Println("Opção inválida, tente novamente.")
}
}
}
Aqui, estamos criando um loop infinito (for
) que vai rodar até o usuário escolher a opção “Sair” (que é a opção 5). Dentro do switch
, vamos chamar as funções de inclusão, edição, listagem e remoção.
exibirMenu()
Agora, vamos criar a função que exibe as opções para o usuário. Bem simples:
func exibirMenu() {
fmt.Println("\nMenu:")
fmt.Println("1 - Incluir Pessoa")
fmt.Println("2 - Editar Pessoa")
fmt.Println("3 - Listar Pessoas")
fmt.Println("4 - Remover Pessoa")
fmt.Println("5 - Sair")
}
Ela só exibe as opções disponíveis. Sem segredos!
incluirPessoa()
Vamos começar a alimentar nossa lista de pessoas. A função incluirPessoa
vai perguntar ao usuário os dados da pessoa (nome, idade, e-mail, telefone, e endereço) e adicionar na nossa lista de usuários.
func incluirPessoa() {
var nome, email, telefone, endereco string
var idade int
fmt.Print("Digite o nome: ")
fmt.Scanln(&nome)
fmt.Print("Digite a idade: ")
fmt.Scanln(&idade)
fmt.Print("Digite o email: ")
fmt.Scanln(&email)
fmt.Print("Digite o telefone: ")
fmt.Scanln(&telefone)
fmt.Print("Digite o endereço: ")
fmt.Scanln(&endereco)
// Criando a nova pessoa e adicionando na lista de usuários
usuario := Pessoa{
nome: nome,
idade: idade,
email: email,
dadosPessoais: map[string]DadosPessoais{
"telefone": {telefone: telefone, endereco: endereco},
},
}
usuarios = append(usuarios, usuario)
fmt.Println("Pessoa incluída com sucesso!")
}
Aqui, estamos coletando os dados via terminal e criando uma nova pessoa com essas informações. Depois, usamos append
para adicionar essa pessoa na nossa lista de usuarios
.
listarPessoas()
Agora que já podemos adicionar pessoas, vamos listar elas na tela. A função listarPessoas
vai mostrar todos os usuários cadastrados.
func listarPessoas() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
fmt.Println("\nLista de Pessoas:")
for _, usuario := range usuarios {
fmt.Printf("Nome: %s, Idade: %d, Email: %s, Telefone: %s, Endereço: %s\n",
usuario.nome, usuario.idade, usuario.email, usuario.dadosPessoais["telefone"].telefone, usuario.dadosPessoais["telefone"].endereco)
}
}
Essa função verifica se há usuários na lista. Se sim, ela imprime cada um na tela. Se não, ela avisa que não tem ninguém cadastrado.
editarPessoa()
A função editarPessoa
vai permitir alterar os dados de uma pessoa. A gente busca a pessoa pelo nome e permite editar os campos que o usuário quiser.
func editarPessoa() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
var nome string
fmt.Print("Digite o nome da pessoa que deseja editar: ")
fmt.Scanln(&nome)
for i, usuario := range usuarios {
if strings.EqualFold(usuario.nome, nome) {
var novoNome, novoEmail, novoTelefone, novoEndereco string
var novaIdade int
fmt.Print("Digite o novo nome (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoNome)
fmt.Print("Digite a nova idade (ou pressione Enter para manter a atual): ")
fmt.Scanln(&novaIdade)
fmt.Print("Digite o novo email (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoEmail)
fmt.Print("Digite o novo telefone (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoTelefone)
fmt.Print("Digite o novo endereço (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoEndereco)
if novoNome != "" {
usuarios[i].nome = novoNome
}
if novaIdade != 0 {
usuarios[i].idade = novaIdade
}
if novoEmail != "" {
usuarios[i].email = novoEmail
}
if novoTelefone != "" {
usuarios[i].dadosPessoais["telefone"] = DadosPessoais{
telefone: novoTelefone,
endereco: novoEndereco,
}
}
fmt.Println("Dados da pessoa atualizados com sucesso!")
return
}
}
fmt.Println("Pessoa não encontrada.")
}
removerPessoa()
Se você quiser remover alguém, a função removerPessoa
faz isso. Ela busca a pessoa pelo nome e a remove da lista.
func removerPessoa() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
var nome string
fmt.Print("Digite o nome da pessoa que deseja remover: ")
fmt.Scanln(&nome)
for i, usuario := range usuarios {
if strings.EqualFold(usuario.nome, nome) {
usuarios = append(usuarios[:i], usuarios[i+1:]...)
fmt.Println("Pessoa removida com sucesso!")
return
}
}
fmt.Println("Pessoa não encontrada.")
}
Aqui usamos o append
para remover a pessoa da lista.
Aqui está o código completo com os comentários explicando cada parte relevante do processo, para criar o menu interativo com Go. Esse código inclui funções de inclusão, edição, listagem e remoção de pessoas. Os comentários servem para ajudar no entendimento do que está acontecendo em cada etapa.
package main
import (
"fmt"
"strings"
)
// Definindo a estrutura Pessoa, que contém os dados básicos da pessoa
type Pessoa struct {
nome string // Nome da pessoa
idade int // Idade da pessoa
email string // Email da pessoa
dadosPessoais map[string]DadosPessoais // Mapa contendo os dados pessoais como telefone e endereço
}
// Definindo a estrutura DadosPessoais, que contém telefone e endereço
type DadosPessoais struct {
telefone string // Telefone da pessoa
endereco string // Endereço da pessoa
}
// Variável global para armazenar a lista de usuários
var usuarios []Pessoa
// Função principal que contém o loop do menu
func main() {
for {
exibirMenu() // Exibe o menu de opções
var opcao int
fmt.Print("Escolha uma opção: ")
fmt.Scanln(&opcao) // Captura a opção escolhida pelo usuário
// O switch executa uma função com base na opção escolhida
switch opcao {
case 1:
incluirPessoa() // Chama a função para incluir uma nova pessoa
case 2:
editarPessoa() // Chama a função para editar uma pessoa existente
case 3:
listarPessoas() // Chama a função para listar todas as pessoas
case 4:
removerPessoa() // Chama a função para remover uma pessoa
case 5:
fmt.Println("Saindo...") // Encerra o programa
return
default:
fmt.Println("Opção inválida, tente novamente.")
}
}
}
// Função que exibe o menu de opções para o usuário
func exibirMenu() {
fmt.Println("\nMenu:")
fmt.Println("1 - Incluir Pessoa")
fmt.Println("2 - Editar Pessoa")
fmt.Println("3 - Listar Pessoas")
fmt.Println("4 - Remover Pessoa")
fmt.Println("5 - Sair")
}
// Função para incluir uma nova pessoa no sistema
func incluirPessoa() {
var nome, email, telefone, endereco string
var idade int
// Captura dos dados via terminal
fmt.Print("Digite o nome: ")
fmt.Scanln(&nome)
fmt.Print("Digite a idade: ")
fmt.Scanln(&idade)
fmt.Print("Digite o email: ")
fmt.Scanln(&email)
fmt.Print("Digite o telefone: ")
fmt.Scanln(&telefone)
fmt.Print("Digite o endereço: ")
fmt.Scanln(&endereco)
// Criando a nova pessoa e adicionando na lista de usuários
usuario := Pessoa{
nome: nome,
idade: idade,
email: email,
dadosPessoais: map[string]DadosPessoais{
"telefone": {telefone: telefone, endereco: endereco},
},
}
usuarios = append(usuarios, usuario) // Adiciona o novo usuário ao slice
fmt.Println("Pessoa incluída com sucesso!")
}
// Função para editar os dados de uma pessoa existente
func editarPessoa() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
var nome string
fmt.Print("Digite o nome da pessoa que deseja editar: ")
fmt.Scanln(&nome)
// Loop para encontrar a pessoa pelo nome e permitir a edição
for i, usuario := range usuarios {
if strings.EqualFold(usuario.nome, nome) { // EqualFold ignora maiúsculas/minúsculas
var novoNome, novoEmail, novoTelefone, novoEndereco string
var novaIdade int
// Captura os novos dados do usuário, permitindo pular com Enter
fmt.Print("Digite o novo nome (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoNome)
fmt.Print("Digite a nova idade (ou pressione Enter para manter a atual): ")
fmt.Scanln(&novaIdade)
fmt.Print("Digite o novo email (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoEmail)
fmt.Print("Digite o novo telefone (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoTelefone)
fmt.Print("Digite o novo endereço (ou pressione Enter para manter o atual): ")
fmt.Scanln(&novoEndereco)
// Atualiza os dados apenas se o novo valor foi informado
if novoNome != "" {
usuarios[i].nome = novoNome
}
if novaIdade != 0 {
usuarios[i].idade = novaIdade
}
if novoEmail != "" {
usuarios[i].email = novoEmail
}
if novoTelefone != "" {
usuarios[i].dadosPessoais["telefone"] = DadosPessoais{
telefone: novoTelefone,
endereco: novoEndereco,
}
}
fmt.Println("Dados da pessoa atualizados com sucesso!")
return
}
}
fmt.Println("Pessoa não encontrada.")
}
// Função para listar todas as pessoas cadastradas
func listarPessoas() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
// Exibe os dados de todas as pessoas cadastradas
fmt.Println("\nLista de Pessoas:")
for _, usuario := range usuarios {
fmt.Printf("Nome: %s, Idade: %d, Email: %s, Telefone: %s, Endereço: %s\n",
usuario.nome, usuario.idade, usuario.email, usuario.dadosPessoais["telefone"].telefone, usuario.dadosPessoais["telefone"].endereco)
}
}
// Função para remover uma pessoa do sistema pelo nome
func removerPessoa() {
if len(usuarios) == 0 {
fmt.Println("Nenhuma pessoa cadastrada.")
return
}
var nome string
fmt.Print("Digite o nome da pessoa que deseja remover: ")
fmt.Scanln(&nome)
// Loop para encontrar a pessoa e removê-la da lista
for i, usuario := range usuarios {
if strings.EqualFold(usuario.nome, nome) { // Busca ignorando maiúsculas/minúsculas
usuarios = append(usuarios[:i], usuarios[i+1:]...) // Remove a pessoa do slice
fmt.Println("Pessoa removida com sucesso!")
return
}
}
fmt.Println("Pessoa não encontrada.")
}
Pessoa
e DadosPessoais
são estruturas que armazenam os dados de cada pessoa. A estrutura Pessoa
contém um mapa de DadosPessoais
, permitindo fácil acesso aos detalhes como telefone e endereço.usuarios
: Um slice global é usado para armazenar todas as pessoas adicionadas ao sistema.incluirPessoa()
: Captura dados do terminal, cria uma nova pessoa e a adiciona ao slice usuarios
.editarPessoa()
: Permite editar os dados de uma pessoa existente, mantendo os valores atuais se o usuário não quiser alterar algum campo.listarPessoas()
: Exibe todas as pessoas cadastradas.removerPessoa()
: Remove uma pessoa do sistema, buscando pelo nome.main
, permitindo ao usuário executar várias operações até escolher a opção “Sair”.Agora abra a pasta no terminal e digite o comando : go run main.go
Esse código permite que você pratique a interação com o usuário e manipulação de dados em Go, criando um sistema simples de gerenciamento de pessoas!
Agora você tem uma aplicação interativa que faz inclusão, edição, listagem e remoção de pessoas, tudo controlado por um loop simples no terminal. Se você quiser ir além, pode adicionar mais opções, como procurar por uma pessoa específica ou salvar esses dados em um arquivo.
Essa é uma ótima base para entender como trabalhar com inputs de usuário, manipulação de arrays (ou slices, no caso do Go) e estruturação de código.
Segue uma lista das extensões que mais utilizo em meu dia a dia como desenvolvedor quando uso o editor VisualStudio... Leia mais
O Git é uma ferramenta poderosa para controle de versão, amplamente utilizada por desenvolvedores. Ao trabalhar com repositórios Git, é... Leia mais
Ao realizar estudos de análise de dados ou ao testar sistemas que lidam com grandes volumes de informações, é comum... Leia mais
Quando você trabalha com Laravel, uma das ferramentas mais poderosas sob o capô é o Service Container. Mas o que... Leia mais