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.