(rows []map[string]string)
| 300 | } |
| 301 | |
| 302 | func csvHeaders(rows []map[string]string) []string { |
| 303 | headerSet := make(map[string]struct{}) |
| 304 | for _, row := range rows { |
| 305 | for header := range row { |
| 306 | headerSet[header] = struct{}{} |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | headers := make([]string, 0, len(headerSet)) |
| 311 | for header := range headerSet { |
| 312 | headers = append(headers, header) |
| 313 | } |
| 314 | sort.Strings(headers) |
| 315 | return headers |
| 316 | } |
| 317 | |
| 318 | func csvColumnName(prefix, key string) string { |
| 319 | if prefix == "" { |