Dereferenzierung von Feldern zum Debuggen
Beim Drucken einer Go-Struktur, die Zeiger enthält, zeigt die Ausgabe normalerweise Speicheradressen anstelle der tatsächlichen Werte an. Um das Debuggen zu verbessern, ist es wünschenswert, die dereferenzierten Werte auszudrucken.
Lösung: Verwendung des go-spew-Pakets
Das go-spew-Paket bietet eine praktische Lösung. Es kann verwendet werden, um eine Struktur zu sichern, einschließlich Feldern, die Zeiger sind, und auch die dereferenzierten Werte anzuzeigen.
Beispiel:
Betrachten Sie die folgende Go-Struktur:
package main import ( "github.com/davecgh/go-spew/spew" ) type ( SomeStruct struct { Field1 string Field2 int Field3 *somePointer } somePointer struct { field string } )
Erstellen Sie in der Hauptfunktion eine Instanz von SomeStruct und übergeben Sie sie an spew.Dump:
func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
Dadurch wird die folgende Ausgabe gedruckt:
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
Der gewünschte dereferenzierte Wert („Ich möchte sehen, was hier drin ist“) ist jetzt unter dem Feld Field3 sichtbar. Dies ermöglicht eine einfache Überprüfung von Zeigern in komplexen Strukturen während des Debuggens.
Das obige ist der detaillierte Inhalt vonWie kann ich dereferenzierte Werte von Zeigern in Go-Strukturen für ein effektives Debugging drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!