0
votes

Comment pouvez-vous résoudre de manière dynamique ou introspecter des variables

existe-t-il un moyen de résoudre ou d'intrusion d'une variable identifiée d'une chaîne de son nom?

Par exemple, si j'ai une valeur de chaîne strval: = "s" qui correspond au nom d'une variable telle que var s chaîne qui est dans le même une fonction La portée de la planification de la variable s ?

Je sais que si ceux-ci étaient des champs d'une structure, je pourrais utiliser la réflexion, mais pour mon étui d'utilisation, je traite des variables scopées localement qui ne font pas partie d'une structure ou d'une carte.


3 commentaires

Je pense que le moyen efficace de le faire est de garder les pointeurs de ces variables locales dans un fichier de registre global (une interface MAP [String]) et de mettre en œuvre des fonctions ou des méthodes d'accesseur de sécurité par conséquent. Cette solution a été adoptée par de nombreuses bibliothèques ... je pense être le plus idiomatique / promu


"Une variable aléatoire à Golang" - Pouvez-vous clarifier la manière dont vous imaginez l'identification de la variable aléatoire? D'une chaîne de son nom, par exemple?


Oui, d'une chaîne de son nom.


3 Réponses :


-1
votes

[I] F J'ai une valeur de chaîne strvale: = "S" qui correspond au nom d'une chaîne de Var S dans la même portée, puis-je rechercher de manière dynamique la valeur de S?

non. Une morte simple non.


0 commentaires

0
votes

Si vous souhaitez analyser lors de l'exécution d'une variable, vous pouvez utiliser un débogueur comme DLOWVE

ref: https://github.com/go-delve/delve


4 commentaires

Est-il possible d'utiliser Programmatiquement (au moment de l'exécution) d'utiliser DLOPVE pour identifier la valeur des variables par nom?


C'est super étrange votre idée, mais vous pourriez peut-être appeler directement une API de Delve pour obtenir ces informations, mais je pense que ce n'est pas une meilleure pratique -> blog.jetbrains.com/go/2018/04/30/...


Oui, il semble que je nagerais en amont. Mon cas d'utilisation est que je veux activer la métaprogramming similaire à eval , mais il semble que cela ne soit pas facile, et je devrais simplement éviter la situation entièrement.


Vous pourriez peut-être faire des concepts et des fragments de code de cet interpréteur-> github.com/containeux/yegi



1
votes

Il semble que votre nuage extrait ces informations à partir d'une structure. xxx

exemple:

https://play.golang.org/p/vwkrzpvwkyn


2 commentaires

Ceci est aussi bon que vous pouvez aller aller, autant que je puisse dire. Merci!


Ils discutent de nombreuses nouvelles fonctionnalités à venir pour GO2 sur GitHub. Peut-être que vous pourriez créer un problème -> Github.com/golang/go/Labels/go2