Maison  >  Article  >  développement back-end  >  Comment effectuer une assertion de type avec des paramètres de fonction dans Go ?

Comment effectuer une assertion de type avec des paramètres de fonction dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 00:18:02599parcourir

How to Perform Type Assertion with Function Parameters in Go?

Assertion de type via un paramètre de fonction

Pour tenter d'effectuer une assertion de type, vous cherchez à transmettre un type spécifique dans une fonction. Plus précisément, votre objectif est d'obtenir une déclaration de fonction qui vous permet de faire correspondre de manière assertive un type fourni, comme illustré dans la fonction hypothétique ci-dessous :

// Note: Type isn't a valid type to use in Go
func myfunction(mystring string, mytype Type) {
    ...

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

    ...  // Do other stuff
}

Pour réussir à implémenter l'assertion de type dans ma fonction, vous devez modifier la fonction déclaration pour accepter un paramètre interface{} pour mytype. Voici comment y parvenir :

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

Cette approche utilise le package Reflect pour comparer le type du paramètre v avec l'interface mytype fournie. Il renvoie une valeur booléenne indiquant si les types correspondent ou non.

Voici un exemple qui montre comment vous pouvez utiliser cette fonction :

package main

import (
    "fmt"
    "reflect"
)

func main() {

    assertNoMatch := myfunction("hello world", map[string]string{})

    fmt.Printf("%+v\n", assertNoMatch)

    assertMatch := myfunction("hello world", "stringSample")

    fmt.Printf("%+v\n", assertMatch)

}

Dans cet exemple, la fonction myfunction détermine correctement si le la valeur fournie correspond au type spécifié et renvoie un booléen en conséquence.

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