Reflection nous permet d'appeler dynamiquement des méthodes par type et nom de méthode. En obtenant la valeur de méthode d'un type et en appelant sa méthode Call, nous pouvons automatiser les appels de méthode, ce qui est puissant dans des tâches telles que le tri.
Technologie Go Reflection Black : utiliser des appels de méthode pour réaliser l'automatisation
Introduction
Reflection est une puissante fonctionnalité Go qui permet à un programme d'inspecter et de modifier sa propre structure au moment de l'exécution. Grâce à la réflexion, nous pouvons appeler des méthodes de manière dynamique et jouer un rôle puissant dans l’automatisation des tâches.
Method Calling
Reflection nous permet d'appeler des méthodes par type et par nom de méthode. La syntaxe spécifique est la suivante :
type ReflectValue interface { MethodByName(name string) *MethodValue Call([]Value) []Value }
ReflectValue
L'interface représente une valeur réfléchissante. La méthode ReflectValue
接口表示可反射的值。MethodByName
方法通过名称获取方法值。Call
方法调用方法并返回结果值。实战案例
让我们来看一个实战案例,动态调用 Sort
MethodByName
obtient la valeur de la méthode par nom. La méthode
Call
appelle une méthode et renvoie la valeur du résultat. Cas pratique
Regardons un cas pratique, appelant dynamiquement la méthode Sort
pour trier le tableau :
package main import ( "fmt" "reflect" ) func main() { // 创建一个数组 arr := []int{3, 1, 2} // 获取数组类型 typ := reflect.TypeOf(arr) // 获取 Sort 方法 sortMethod := typ.MethodByName("Sort") // 调用 Sort 方法 sortMethod.Call(reflect.ValueOf(arr)) // 输出排序后的数组 fmt.Println(arr) }
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!