Go 콘솔에서 구조체 변수를 인쇄하는 방법
Suraj Joshi
2023년12월11일
Go에서struct
는 동일하거나 다른 데이터 유형의 서로 다른 필드를 모은 것입니다. struct
는 객체 지향 프로그래밍 패러다임의 클래스와 유사합니다. fmt
패키지의Printf
함수와Printf
함수의 인수로 특수 태그를 사용하여 구조체를 인쇄 할 수 있습니다. 마찬가지로encoding/json
,go-spew
및Pretty 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
기능
특별한 포맷팅 옵션과 함께 패키지 fmt
의Printf
기능을 사용할 수 있습니다. 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/json
의 Marshal
함수를 사용하는 것입니다.
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-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 is a backend software engineer at Matrice.ai.
LinkedIn