Use reflection to dump context
- Vorherrschende Sprache
- Keine Sprachdaten
- Sterne
- 568
- Forks
- 73
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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!
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Das Issue schlägt vor, eine auf Reflection basierende Debugging-Utility für Go-Kontexte hinzuzufügen. Sehen Sie sich die vorhandenen Beispiele im Repository an, um die Struktur und Benennung zu verstehen. Die bereitgestellte Funktion kann in eine neue Beispieldatei übernommen werden, wahrscheinlich in einem Verzeichnis wie 'context' oder 'debug'. Stellen Sie sicher, dass das Beispiel kompiliert und ausgeführt werden kann und demonstriert, wie die Interna eines Kontexts inspiziert werden. Prüfen Sie, ob bereits Tests vorhanden sind, um zu sehen, wie Beispiele validiert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- go
- Bereich
- documentation
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 75/100