package main import ( "encoding/json" "os" ) type storage[T any] struct { FileName string } func newStorage[T any](filename string) *storage[T] { return &storage[T]{FileName: filename} } func (s *storage[T]) save(data T) error { fileData, err := json.MarshalIndent(data, "", " ") if err != nil { return err } return os.WriteFile(s.FileName, fileData, 0o644) } func (s *storage[T]) load(data *T) error { fileData, err := os.ReadFile(s.FileName) if err != nil { return err } return json.Unmarshal(fileData, data) }