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!