Maison > développement back-end > Golang > 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
Libérer: 2024-11-02 00:18:02
original
721 Les gens l'ont consulté

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
}
Copier après la connexion

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)
}
Copier après la connexion

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)

}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal