Maison >développement back-end >Golang >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 ?

DDD
DDDoriginal
2024-10-30 22:24:30288parcourir

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 :

<code class="go">// 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)
}</code>

Pour réussir à exécuter des assertions de type dans myfunction, utilisez la déclaration de fonction suivante :

<code class="go">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
}</code>

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn