es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo prevenir/arreglar el pánico: error de tiempo de ejecución: dirección de memoria no válida o referencia a un puntero nulo.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy nuevo en golang. A partir del código a continuación, a veces el color podría ser nulo, pero todavía necesito llamar a GetCategory. Esto resultaría en el siguiente error:
pánico: error en tiempo de ejecución: dirección de memoria no válida o referencia de puntero nula

¿Cómo llamar a GetCategory con gracia y evitar el error?

¡Gracias de antemano por cualquier ayuda!

“`package main

import (
"fmt"
"strings"
)

type evento struct {
color *string
Categoria *string
}

func GetCategory(color string) (*string, error) {
var categoria string
if strings.HasPrefix(color, "red") {
categoria = "gusta"
} else if strings.HasPrefix(color, "blue") {
categoria = "no gusta"
}
return &categoria, nil
}

func main() {
categoria := "rojo"
eventObj := evento{
Categoria: &categoria,
}
fmt.Println(GetCategory(*eventObj.color))

}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Se puede usar un operador ternario para verificar si color es nulo antes de llamar a GetCategory:

    category := "rojo"
    eventObj := evento{
        Categoria: &category,
    }
    
    if eventObj.color != nil {
        fmt.Println(GetCategory(*eventObj.color))
    } else {
        fmt.Println("color es nulo")
    }
    

Comments are closed.