Fácil Go

Zero values na prática

Enunciado

Declare três variáveis usando var sem inicializá-las: uma do tipo int, uma string e uma bool. Imprima cada uma e seus respectivos zero values.

Requisitos

  • Usar var para declarar as três variáveis.
  • Imprimir os valores no formato: int: 0, string: (vazio), bool: false.
  • Não usar := para essas variáveis.

Código inicial

package main

import "fmt"

func main() {
	// declare as variáveis aqui
}

Saída esperada

int: 0
string: 
bool: false
Ver dica

Lembre-se: var x int já inicializa com 0. Para string, o zero value é uma string vazia.

Mostrar solução
package main

import "fmt"

func main() {
	var i int
	var s string
	var b bool

	fmt.Printf("int: %d\n", i)
	fmt.Printf("string: %s\n", s)
	fmt.Printf("bool: %t\n", b)
}

Passo a passo

  1. Declaramos var i int — como não atribuímos valor, i recebe o zero value 0.
  2. Declaramos var s string — o zero value de string é "" (string vazia).
  3. Declaramos var b bool — o zero value de bool é false.
  4. Usamos fmt.Printf com os verbos %d, %s e %t para imprimir cada tipo corretamente.
  5. A saída mostra os zero values na ordem: 0, linha vazia, false.

Por que funciona

Em Go, toda variável declarada sem valor explícito é inicializada com seu zero value. Isso garante que não existam valores indefinidos e que o programa tenha comportamento previsível. O uso de var sem inicialização é a forma mais clara de demonstrar esse conceito.

Erros comuns

  • Esquecer o %t para bool: usar %v também funciona, mas %t é o verbo específico para bool. Se usar %d com bool, o compilador acusa erro de tipo.
  • Achar que string vazia imprime algo: fmt.Println(s) imprime uma linha em branco; é o esperado.
  • Tentar usar := sem valor: i := não compila; := exige pelo menos uma variável à esquerda e uma expressão à direita.

Outra forma de resolver

Poderia usar fmt.Println diretamente:

fmt.Println("int:", i)
fmt.Println("string:", s)
fmt.Println("bool:", b)

Mas a saída teria espaços extras e não mostraria a string vazia de forma tão explícita.

Saída esperada

int: 0
string: 
bool: false