偵錯指標欄位
在 Go 中,列印包含指標欄位的結構通常會輸出記憶體位址而不是實際值。這在調試過程中可能會很不方便,尤其是在處理大量指標欄位時。
取消引用指標欄位
要顯示指標欄位的基礎值,一種選擇是手動使用星號運算子 (*) 取消引用每個欄位。然而,對於具有多個指標欄位的結構體來說,這種方法變得乏味。
使用 go-spew
Go 提供了一個強大的工具來調試此類場景:go-spew 套件。該套件提供了一種深入研究任何值的結構的簡單方法。
範例
考慮以下程式碼:
package main import ( "fmt" "github.com/davecgh/go-spew/spew" ) type SomeStruct struct { Field1 string Field2 int Field3 *somePointer } type 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) }
當執行此程式碼,它會列印以下輸出:
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
如您所見,go-spew 套件提供了更詳細和結構化的輸出,包括指標欄位的基礎值。這使得調試和理解結構的內容變得更加容易。
以上是如何在偵錯過程中顯示 Go 結構體中指標欄位的底層值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!