Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich dereferenzierte Werte von Zeigern in Go-Strukturen für ein effektives Debugging drucken?

Wie kann ich dereferenzierte Werte von Zeigern in Go-Strukturen für ein effektives Debugging drucken?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 08:43:02929Durchsuche

How Can I Print Dereferenced Values of Pointers in Go Structs for Effective Debugging?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn