3 votes

Comment puis-je enregistrer la valeur d'un pointeur s'il n'est pas nul, sinon enregistrer nil en GO?

Bonjour, je veux journaliser la valeur d'une variable si elle n'est pas nulle sinon je veux afficher autre chose

par exemple:

var point *string
var point2 *string

p:="hi"

point2=&p

fmt.Printf("%v,%v",*point,*point2)

dans ce cas, j'aurai une erreur puisque point est nul, y a-t-il un moyen d'afficher la valeur de la variable si elle n'est pas nulle ou d'afficher autre chose si elle est nulle?

Je veux faire cela de manière simple au lieu de créer une déclaration if/else pour vérifier si la variable est nulle

1voto

nosequeldeebee Points 488

Vous devriez probablement utiliser if/else dans ce cas MAIS si vous avez de nombreuses conditions potentielles "if" pour chaque point et point2, vous pouvez utiliser les déclarations Switch.

package main

import (
    "fmt"
)

func main() {

    type Points struct {
        Point  *string
        Point2 *string
    }

    p := "hi"
    pts := Points{nil, &p}

    switch pts.Point {
    case nil:
        fmt.Printf("%v est vide", pts.Point)
    default:
        fmt.Printf("%v", *pts.Point)

    }

    fmt.Println()

    switch pts.Point2 {
    case nil:
        fmt.Printf("%v est vide", pts.Point2)
    default:
        fmt.Printf("%v", *pts.Point2)

    }

}

Sortie:

 est vide
hi

Go playground

0voto

Roland Illig Points 15357

Étant donné qu'il n'y a pas d'opérateur ?: en Go, la meilleure méthode est d'écrire une fonction :

func StringPtrToString(p *string) string {
    if p != nil { return *p }
    return "(nil)"
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X