Wie dereferenziere ich Zeigerfelder für ein effektives Debugging in Go?

Mary-Kate Olsen
Freigeben: 2024-11-10 02:09:02
Original
858 Leute haben es durchsucht

How to Dereference Pointer Fields for Effective Debugging in Go?

Dereferenzieren von Zeigerfeldern zum Debuggen

Beim Drucken einer Struktur mit Zeigerfeldern werden diese normalerweise als Speicheradressen angezeigt. Dies kann beim Debuggen unpraktisch sein, insbesondere wenn eine Struktur zahlreiche Zeigerfelder enthält.

Betrachten Sie dieses Beispiel:

package main

import "fmt"

type SomeStruct struct {
    somePointer *somePointer
}
type somePointer struct {
    field string
}

func main() {
    fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}})
}
Nach dem Login kopieren

Dieser Code gibt die Speicheradresse anstelle des gewünschten Werts aus:

{0x10500168}
Nach dem Login kopieren

Um den im Zeigerfeld gespeicherten tatsächlichen Wert auszudrucken, können wir das Paket go-spew verwenden, das auf das Drucken komplexer Datenstrukturen in a spezialisiert ist Für Menschen lesbares Format.

So verwenden Sie es:

package main

import (
    "github.com/davecgh/go-spew/spew"
)

type (
    SomeStruct struct {
        Field1 string
        Field2 int
        Field3 *somePointer
    }
    somePointer struct {
        field string
    }
)

func main() {
    s := SomeStruct{
        Field1: "Yahoo",
        Field2: 500,
        Field3: &somePointer{"I want to see what is in here"},
    }
    spew.Dump(s)
}
Nach dem Login kopieren

Dieser Code erzeugt die folgende Ausgabe:

(main.SomeStruct) {
    Field1: (string) "Yahoo",
    Field2: (int) 500,
    Field3: (*main.somePointer)(0x2102a7230)({
        field: (string) "I want to see what is in here"
    })
}
Nach dem Login kopieren

Wie Sie sehen können, go-spew Bietet eine viel detailliertere und informativere Darstellung der Struktur. Die Zeigerfelder werden dereferenziert und als ihre tatsächlichen Werte angezeigt. Dies macht es viel einfacher, den Inhalt einer Struktur während des Debuggens zu überprüfen.

Das obige ist der detaillierte Inhalt vonWie dereferenziere ich Zeigerfelder für ein effektives Debugging in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage