Heim >Backend-Entwicklung >Golang >Wie dereferenziere ich Zeigerfelder für ein effektives Debugging in Go?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 02:09:02901Durchsuche

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"}})
}

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

{0x10500168}

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)
}

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"
    })
}

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!

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