[go] 구조체(struct)를 파일에 저장하는 방법

Go 언어에서는 구조체(struct)를 파일에 저장하는 방법이 매우 간단합니다. 이전에 정의된 구조체의 데이터를 파일에 기록하고, 파일에서 데이터를 읽어와 구조체로 다시 복원할 수 있습니다. 이를 통해 데이터의 영속성을 유지하고 필요한 경우에 데이터를 파일로부터 읽어올 수 있습니다.

아래는 Go 언어에서 구조체를 파일에 저장하는 예시 코드입니다.

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
)

type Person struct {
	Name   string
	Age    int
	Gender string
}

func main() {
	// 구조체를 생성합니다.
	person := Person{
		Name:   "John",
		Age:    30,
		Gender: "Male",
	}

	// 생성한 구조체를 파일에 저장합니다.
	err := saveToFile("person.json", person)
	if err != nil {
		fmt.Println("Failed to save struct to file:", err)
		return
	}

	// 파일로부터 구조체를 읽어옵니다.
	loadedPerson, err := loadFromFile("person.json")
	if err != nil {
		fmt.Println("Failed to load struct from file:", err)
		return
	}

	fmt.Println("Loaded person:", loadedPerson)
}

// 구조체를 파일에 저장하는 함수입니다.
func saveToFile(filename string, data interface{}) error {
	// 구조체를 JSON 형식으로 변환합니다.
	jsonData, err := json.Marshal(data)
	if err != nil {
		return err
	}

	// JSON 데이터를 파일에 저장합니다.
	err = ioutil.WriteFile(filename, jsonData, 0644)
	if err != nil {
		return err
	}

	return nil
}

// 파일로부터 구조체를 읽어오는 함수입니다.
func loadFromFile(filename string) (Person, error) {
	// 파일로부터 JSON 데이터를 읽어옵니다.
	jsonData, err := ioutil.ReadFile(filename)
	if err != nil {
		return Person{}, err
	}

	// JSON 데이터를 구조체로 변환합니다.
	var loadedPerson Person
	err = json.Unmarshal(jsonData, &loadedPerson)
	if err != nil {
		return Person{}, err
	}

	return loadedPerson, nil
}

위의 코드는 Person 구조체를 파일에 저장하고, 파일로부터 구조체를 읽어오는 예시를 보여줍니다. 코드를 실행하면 person.json 파일이 생성되고, 해당 파일로부터 구조체가 읽혀옵니다. 구조체를 JSON 형식으로 저장하기 위해 encoding/json 패키지가 사용되었습니다.

이 예시를 기반으로 구조체의 필드와 데이터를 원하는 대로 수정하고, 파일 이름을 변경하여 사용할 수 있습니다.

참고 문서:

위의 예시를 사용하여 구조체를 파일에 저장하고 읽어오는 방법을 적용해보세요.