HOWTO · Go
Go 콘솔에서 구조체 변수를 인쇄하는 방법
Go에서 구조를 인쇄하기 위해 함수로 형식화 된 I/O를 구현하는 fmt 패키지를 사용합니다.
이 페이지의 내용
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