"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment transmettre des variables de type aux fonctions pour les assertions de type dans Go ?

Comment transmettre des variables de type aux fonctions pour les assertions de type dans Go ?

Publié le 2024-11-08
Parcourir:422

How to Pass Type Variables to Functions for Type Assertions in Go?

Passer des variables de type aux fonctions pour les assertions de type

Vous souhaitez effectuer des assertions de type en passant un type dans une fonction. Essentiellement, votre objectif est d'atteindre les objectifs suivants :

// Note that this is pseudocode, because Type isn't valid here
func myfunction(mystring string, mytype Type) {
    ...

    someInterface := translate(mystring)
    object, ok := someInterface.(mytype)

    ...  // Do other stuff
}

func main() {
    // Desired function call
    myfunction("hello world", map[string]string)
}

Pour réussir les assertions de type dans ma fonction, utilisez la déclaration de fonction suivante :

package main

import "reflect"

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}

func main() {
    assertNoMatch := myfunction("hello world", map[string]string{})
    fmt.Printf("% v\n", assertNoMatch) // false

    assertMatch := myfunction("hello world", "stringSample")
    fmt.Printf("% v\n", assertMatch) // true
}

Cette approche implique d'utiliser un échantillon du type que vous souhaitez faire correspondre, en garantissant que les types sont identiques pour une assertion de type réussie.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3