[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
패키지가 사용되었습니다.
이 예시를 기반으로 구조체의 필드와 데이터를 원하는 대로 수정하고, 파일 이름을 변경하여 사용할 수 있습니다.
참고 문서:
위의 예시를 사용하여 구조체를 파일에 저장하고 읽어오는 방법을 적용해보세요.