package csvwriter import ( "encoding/csv" "fmt" "os" "path/filepath" ) type BenchmarkResult struct { Structure string Mode string Operation string Time float64 } func (b *BenchmarkResult) ToString() string { return fmt.Sprintf("%s %s %s %f", b.Structure, b.Mode, b.Operation, b.Time) } func (b *BenchmarkResult) ToStrings() []string { return []string{b.Structure, b.Mode, b.Operation, fmt.Sprintf("%d", b.Time)} } // AppendRaw дописывает произвольные строки в CSV func AppendRaw(results []BenchmarkResult) error { filename := filepath.Join("results", "benchmarks.csv") file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { return err } defer file.Close() writer := csv.NewWriter(file) defer writer.Flush() rows := make([][]string, len(results)) for i, res := range results { rows[i] = res.ToStrings() } return writer.WriteAll(rows) // WriteAll пишет всё сразу }