From 8987a773164bbaa25135ec8e3c53e0ec06a21d80 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 21 Jun 2025 18:08:49 +0800 Subject: [PATCH] order the list fields --- main.go | 52 +++++++++++++++++++++++++++++++++++++++++++++------- diff --git a/main.go b/main.go index 7c534cfaa9d028a80b25874ca99f79c114567fe9..a5ed6e337acaf2c5ab63103c2e0252d585424893 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ "net/http" "os" "os/exec" "path/filepath" + "sort" "strings" "time" ) @@ -145,13 +146,53 @@ } records = append(records, data) } } - fieldSet["Time"] = struct{}{} + + // Define the desired column order + preferredOrder := []string{ + "ip_address", "gender", "age", "dialect", "guanhua_details", "wuyu_details", + "other_details", "usage_frequency", "fluency", "foreign_language", + "music_training", "music_freq", "absolute_pitch", + } + // Add q1-q20 + for i := 1; i <= 20; i++ { + preferredOrder = append(preferredOrder, fmt.Sprintf("q%d", i)) + } + // Add cadence1-4 + for i := 1; i <= 4; i++ { + preferredOrder = append(preferredOrder, fmt.Sprintf("cadence%d", i)) + } + // Add cadence_sample_1-4 + for i := 1; i <= 4; i++ { + preferredOrder = append(preferredOrder, fmt.Sprintf("cadence_sample_%d", i)) + } + // Add style columns + preferredOrder = append(preferredOrder, + "style1trap", "style2drill", "style3drumbass", "style4reggaetton", "style5rb", + ) + // Add style_sample_1-5 + for i := 1; i <= 5; i++ { + preferredOrder = append(preferredOrder, fmt.Sprintf("style_sample_%d", i)) + } - // Build field list (columns) + // Build final field list with preferred order first, then remaining fields fields := make([]string, 0, len(fieldSet)) + remainingFields := make([]string, 0) + + // First add fields that are in preferred order and exist in the data + for _, field := range preferredOrder { + if _, exists := fieldSet[field]; exists { + fields = append(fields, field) + delete(fieldSet, field) // Remove from set to track remaining fields + } + } + + // Then add any remaining fields that weren't in preferred order for field := range fieldSet { - fields = append(fields, field) + remainingFields = append(remainingFields, field) } + // Sort remaining fields alphabetically for consistency + sort.Strings(remainingFields) + fields = append(fields, remainingFields...) // Prepare CSV buffer var buf bytes.Buffer @@ -163,10 +204,7 @@ for _, record := range records { row := make([]string, len(fields)) for i, field := range fields { - if field == "Time" { - } else { - row[i] = record[field] - } + row[i] = record[field] // Will be empty string if field doesn't exist } writer.Write(row) } -- 2.48.1