Ponteiros Nil
Parte da seção Fundamentos do Journey de GO da Coddy — lição 65 de 109.
Um ponteiro nil é um ponteiro que não aponta para nada. É o valor zero para tipos de ponteiro.
Declare um ponteiro nil:
var ptr *int
fmt.Println(ptr)
fmt.Println(ptr == nil)A saída mostra que o ponteiro é nil:
<nil>
trueTentar desreferenciar um ponteiro nil causa um pânico:
var ptr *int
// Isso fará seu programa travar
// fmt.Println(*ptr)Sempre verifique se um ponteiro é nil antes de desreferenciá-lo:
if ptr != nil {
fmt.Println(*ptr)
}Desafio
InicianteNeste desafio, você trabalhará com ponteiros nil em Go. Um ponteiro nil é um ponteiro que não aponta para nenhum endereço de memória.
Sua tarefa é verificar se um ponteiro é nil e imprimir uma mensagem apropriada.
O código já possui uma variável de ponteiro que está definida como nil. Você precisa adicionar código para verificar se o ponteiro é nil e imprimir uma mensagem de acordo.
Folha de consulta
Um ponteiro nil é um ponteiro que não aponta para nada. É o valor zero para tipos de ponteiro.
Declare um ponteiro nil:
var ptr *int
fmt.Println(ptr) // <nil>
fmt.Println(ptr == nil) // trueSempre verifique se um ponteiro é nil antes de desreferenciá-lo para evitar panics:
if ptr != nil {
fmt.Println(*ptr)
}Experimente você mesmo
package main
import "fmt"
func main() {
// Este é um ponteiro nil para um inteiro
var ptr *int
// TODO: Verificar se ptr é nil
// Se for nil, imprima "The pointer is nil"
// Se não for nil, imprima "The pointer is not nil"
fmt.Println("Program completed")
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores de Comparação e Lógicos
Operadores de Comparação - Parte 1Operadores de Comparação - Parte 2Operador Lógico ANDOperador Lógico OROperador Lógico NOTFundamentos de Precedência de OperadoresRecapitulação - Fazendo Comparações7Fluxo de Controle: Loops
O Loop `for` ExplicadoLoop For - BásicoLoop For - Apenas CondiçãoA Palavra-chave `break`A Palavra-chave `continue`Loops AninhadosRecapitulação - Repetindo Ações2Variáveis e Tipos de Dados Básicos
O que é uma variávelInferência de Tipo com `:=`Inteiros (int)Números de Ponto FlutuanteBooleanosStringsValores ZeroConstantesConvenções de NomenclaturaRecapitulação - Variáveis e Tipos5Entrada/Saída Básica
Saída FormatadaVerbos de FormataçãoImprimindo TiposObtendo Entrada Básica do UsuárioRecapitulação - Entrada e Saída8Funções
Entendendo FunçõesDeclarando uma FunçãoChamando FunçõesParâmetros de FunçãoRetornando um Único ValorRetornando Múltiplos ValoresValores de Retorno NomeadosFundamentos de Escopo de FunçãoRecapitulação - Criando Código Reutilizável3Operadores Básicos
Operadores AritméticosOperador de DivisãoO Operador MóduloOperador de AtribuiçãoOperadores de Atribuição CompostaIncremento e DecrementoRecapitulação - Cálculos6Fluxo de Controle: Condicionais
A Instrução `if`A Palavra-chave `else`A Palavra-chave `else if`Sombreamento de Variáveis no `if`Inicializando VariáveisA Instrução `switch`Switch com ExpressõesSwitch sem ExpressãoA Palavra-chave `fallthrough`Recapitulação - Tomando Decisões