Use reflection to dump context
- Langage dominant
- Aucune donnée de langage
- Étoiles
- 568
- Forks
- 73
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Sometimes for local debugging, using [reflection to dump the context](https://stackoverflow.com/a/60278058/2904179) is handy:
```
func printContextInternals(ctx interface{}, inner bool) {
contextValues := reflect.ValueOf(ctx).Elem()
contextKeys := reflect.TypeOf(ctx).Elem()
if !inner {
fmt.Printf("\nFields for %s.%s\n", contextKeys.PkgPath(), contextKeys.Name())
}
if contextKeys.Kind() == reflect.Struct {
for i := 0; i < contextValues.NumField(); i++ {
reflectValue := contextValues.Field(i)
reflectValue = reflect.NewAt(reflectValue.Type(), unsafe.Pointer(reflectValue.UnsafeAddr())).Elem()
reflectField := contextKeys.Field(i)
if reflectField.Name == "Context" {
printContextInternals(reflectValue.Interface(), true)
} else {
fmt.Printf("field name: %+v\n", reflectField.Name)
fmt.Printf("value: %+v\n", reflectValue.Interface())
}
}
} else {
fmt.Printf("context is empty (int)\n")
}
}
```
Thanks for putting all your examples in one central place!
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
L’issue suggère d’ajouter un utilitaire de débogage basé sur la réflexion pour les contextes Go. Consultez les exemples existants dans le dépôt afin de comprendre la structure et les conventions de nommage. La fonction fournie peut être adaptée dans un nouveau fichier d’exemple, probablement dans un répertoire tel que 'context' ou 'debug'. Assurez-vous que l’exemple se compile et s’exécute, en montrant comment inspecter les éléments internes d’un contexte. Vérifiez s’il existe déjà des tests afin de voir comment les exemples sont validés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- go
- Domaine
- documentation
- Type d'issue
- Documentation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 75/100