Go 콘솔에서 구조체 변수를 인쇄하는 방법

Suraj Joshi 2023년12월11일
  1. Go에서struct 선언
  2. fmt 패키지의Printf 기능
  3. encoding/json 패키지의Marshal 기능
Go 콘솔에서 구조체 변수를 인쇄하는 방법

Go에서struct는 동일하거나 다른 데이터 유형의 서로 다른 필드를 모은 것입니다. struct는 객체 지향 프로그래밍 패러다임의 클래스와 유사합니다. fmt 패키지의Printf 함수와Printf 함수의 인수로 특수 태그를 사용하여 구조체를 인쇄 할 수 있습니다. 마찬가지로encoding/json,go-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 패키지의 덤프 기능

또 다른 방법은 패키지go-spewDump 기능을 사용하는 것입니다.
.

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