Go 中如何在控制檯終端中列印結構體變數

Suraj Joshi 2023年12月11日
  1. 在 Go 中宣告結構體 struct
  2. fmt 包的 Printf 功能
  3. encoding/json 包的 Marshal 函式
Go 中如何在控制檯終端中列印結構體變數

在 Go 中,結構體 struct 是具有相同或不同資料型別的不同欄位的集合。結構體類似於物件導向程式設計範例中的類。我們可以使用軟體包 fmtPrintf 功能以及特殊標記作為 Printf 功能的引數來列印結構。同樣,我們也可以使用特殊的程式包來列印結構,例如 encoding/jsongo-spewPretty Printer Library

在 Go 中宣告結構體 struct

Go 中的結構體是使用 struct 關鍵字建立的。

package main

import "fmt"

type info struct {
    Name    string
    Address string
    Pincode int
}

func main() {
    a1 := info{"Dikhsya Lhyaho", "Jhapa", 123}
    fmt.Println("Info of Dikhsya: ", a1)
}

輸出:

Info of Dikhsya:  {Dikhsya Lhyaho Jhapa 123}

我們可以在 Go 中使用各種軟體包列印 struct 變數。其中一些描述如下:

fmt 包的 Printf 功能

我們可以將軟體包 fmtPrintf 功能與特殊格式設定一起使用。使用 fmt 顯示變數的可用格式選項是:

格式 描述
%v 以預設格式列印變數值
%+v 用值新增欄位名稱
%#v 該值的 Go 語法表示形式
%T 值型別的 Go 語法表示形式
%% 文字百分號;不消耗任何價值

示例程式碼:

package main

import "fmt"

type Employee struct {
    Id   int64
    Name string
}

func main() {
    Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}
    fmt.Printf("%+v\n", Employee_1) // with Variable name
    fmt.Printf("%v\n", Employee_1)  // Without Variable Name
    fmt.Printf("%d\n", Employee_1.Id)
    fmt.Printf("%s\n", Employee_1.Name)
}

輸出:

{Id:10 Name:Dixya Lhyaho}
{10 Dixya Lhyaho}
10
Dixya Lhyaho

encoding/json 包的 Marshal 函式

另一種方法是使用 encoding/jsonMarshal 函式。

package main

import (
    "encoding/json"
    "fmt"
)

type Employee struct {
    Id   int64
    Name string
}

func main() {
    Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}

    jsonE, _ := json.Marshal(Employee_1)
    fmt.Println(string(jsonE))
}

輸出:

{"Id":10,"Name":"Dixya Lhyaho"}

go-spew 軟體包的 Dump 函式

另一種方法是使用 go-spew 軟體包的 Dump 函式。

package main

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

type Employee struct {
    Id   int64
    Name string
}

func main() {
    Employee_1 := Employee{Id: 10, Name: "Dixya Lhyaho"}
    spew.Dump(Employee_1)

}

輸出:

(main.Employee) {
 Id: (int64) 10,
 Name: (string) (len=12) "Dixya Lhyaho"
}

要安裝 go-spew 軟體包,請在終端中執行以下命令:

go get -u github.com/davecgh/go-spew/spew
作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Go Struct