Open VS ReadFile

Memory Usage

os.ReadFile 은 파일 크기만큼 메모리를 할당한다.

os.Open은 파일을 바로 읽지 않고 파일과 연결되는 통로(*os.File)를 반환한다.

JSON -> struct


// os.ReadFile + json.Unmarshal

j, err := os.ReadFile("config.json")
if err != nil {
  log.Fatal(err)
}
var config Config
err = json.Unmarshal(j, &config)
if err != nil {
  log.Fatal(err)
}

// os.Open + json.NewDecoder

f, err := os.Open("config.json")
if err != nil {
  log.Fatal(err)
}
defer f.Close()
var config Config
err = json.NewDecoder(f).Decode(&config)
if err != nil {
  log.Fatal(err)
}