Avatar ·

Erro de nil pointer dereference em Go: causas e correção

Olá a todos! Sou novo em Go e me deparei com um erro que me deixou confuso. Eu tenho uma struct User e estou tentando escrever uma função que imprime o nome do usuário. Aqui está meu código: ```go package main import "fmt" type User struct { Name string Age int } func printUserName(u *User) { fmt.Println("User name is:", u.Name) } func main() { var user *User // Aqui eu apenas declaro o ponteiro, mas não o inicializo printUserName(user) } ``` Quando executo este código, recebo o erro: `panic: runtime error: invalid memory address or nil pointer dereference`. Eu entendo que isso tem algo a ver com o fato de o ponteiro user ser nil, mas não entendo bem como corrigir isso. Em outras linguagens, como C++ ou Java, eu poderia simplesmente passar o objeto por valor, e tudo funcionaria. E aqui, se eu passo um ponteiro, ele precisa apontar para algo real? Por favor, expliquem o que é nil pointer dereference, por que isso ocorre e como corrigir.