Dans Go, il n'est pas simple d'instancier un objet lorsque seul le nom du type est disponible sous forme de chaîne. En effet, Go est typé statiquement et supprime le code inutilisé lors de la liaison.
Utilisation de la réflexion
Malgré les contraintes, la réflexion peut être utilisée pour créer dynamiquement des instances. Voici le processus :
Exemple de code :
import ( "fmt" "reflect" ) // Global map for type lookup var typeMap = make(map[string]reflect.Type) func init() { // Initialize typeMap by adding types to it typeMap["MyStruct"] = reflect.TypeOf(MyStruct{}) } func main() { typeName := "MyStruct" t := typeMap[typeName] instance := reflect.New(t).Elem().Interface() fmt.Println(instance) }
Approches alternatives
Remarque : Ces approches évitent les complexités de la réflexion et améliorent potentiellement la gestion des erreurs lors compilation.
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!