[go] 구조체(struct)의 필드 태그(tag) 옵션 사용법

Go 언어에서 구조체 필드에는 필드 태그(tag)라는 옵션을 지정할 수 있습니다. 필드 태그는 필드에 메타데이터를 추가하는 용도로 사용됩니다. 이는 주로 JSON, XML 등과 같은 데이터 직렬화 및 역직렬화 작업에 유용합니다. 아래는 구조체 필드 태그의 사용법에 대한 예시 코드입니다.

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	Email string `json:"email,omitempty"`
}

func main() {
	p := Person{
		Name: "John Doe",
		Age:  30,
	}

	// 구조체를 JSON으로 직렬화
	data, _ := json.Marshal(p)
	fmt.Println(string(data))

	// JSON을 구조체로 역직렬화
	jsonStr := `{"name":"Jane Smith","age":25}`
	var p2 Person
	json.Unmarshal([]byte(jsonStr), &p2)
	fmt.Println(p2)
}

위의 예시 코드에서는 Person이라는 구조체를 정의하고 필드 태그를 사용하여 JSON 직렬화에 대한 메타데이터를 추가했습니다. 필드 태그는 json:"태그명"과 같은 형식으로 구성되며, 여기서의 태그명은 JSON에서 해당 필드의 키 값으로 사용됩니다. 필드 태그에 omitempty 옵션을 지정하면 해당 필드의 값이 비어있는 경우에는 JSON에서 제외됩니다.

위의 예시 코드를 실행해보면 구조체를 JSON으로 직렬화하고, JSON을 다시 구조체로 역직렬화하는 과정을 볼 수 있습니다. 필드 태그를 사용하면 구조체와 JSON 데이터 간의 변환 작업을 간편하게 수행할 수 있습니다.

더 자세한 내용은 공식 Go 문서를 참고하시기 바랍니다.