goflat
Context-aware generic flat file marshaler/unmarshaler
About goflat
goflat
Generic, context-aware flat file marshaller and unmarshaller using the flat field tag in structs.
Overview
type Record struct {
FirstName string `flat:"first_name"`
LastName *string `flat:"last_name"`
Age int `flat:"age"`
Height float32 `flat:"-"` // ignored
}
...
goflat.MarshalIteratorToWriter[Record](ctx, seq, writer *csv.Writer, opts Options)
// or
goflat.MarshalSliceToWriter[Record](ctx, slice, csvWriter, options)
// or
goflat.MarshalChannelToWriter[Record](ctx, inputCh, csvWriter, options)
Will result in:
first_name,last_name,age
John,Doe,30
Jane,Doe,20
Can unmarshal too!
goflat.UnmarshalToChan[Record](ctx, csvReader, options, outputCh)
Options
Both marshal and unmarshal operations support goflat.Options, which allow to introduce automatic safety checks, such as duplicated headers, flat tag coverage and more.
Custom marshal / unmarshal
Both operations can be customised for each field in a struct by having that value implementing goflat.Marshal and/or goflat.Unmarshal.
type Record struct {
Field MyType `flat:"field"`
}
type MyType struct {
Value int
}
func (m *MyType) Marshal() (string,error) {
if m.Value %2 == 0 {
return "odd", nil
}
return "even", nil
}
Frequently Asked Questions
What is goflat?
goflat is a File Handling library for the Go programming language. Context-aware generic flat file marshaler/unmarshaler
How do I install goflat?
Install goflat with the Go module system using `go get lzambarda/goflat`. Check the repository for the current installation instructions.
What category does goflat belong to?
goflat is listed under File Handling, specifically File Handling.