我想將學生標記寫入GO中的csv文件。使用GO語言寫入/保存CSV數據
它打印每頁所需的10結果與Println
,但只節省CSV的最後一個值(不是所有的10)。
這是我在做什麼
訪問者訪問顯示
studentmarks.com/page=1
標記爲10名學生,它也保存在CSV訪問者點擊下頁,他被導航到
studentmarks.com/page=2
另外10名學生標記顯示,它也被保存在隨後的列/行的CSV
等
fmt.Fprintf(w, KeyTemplate, key.fname, key.marks, key.lname)
工作正常,並顯示每個網頁10分的結果,但我無法保存所有10個結果中的CSV(我目前的代碼,只有最後的結果被保存)。
這是我負責打印和保存結果的代碼片段。
func PageRequest(w http.ResponseWriter, r *http.Request) {
// Default page number is 1
if len(r.URL.Path) <= 1 {
r.URL.Path = "/1"
}
// Page number is not negative or 0
page.Abs(page)
if page.Cmp(one) == -1 {
page.SetInt64(1)
}
// Page header
fmt.Fprintf(w, PageHeader, pages, previous, next)
// Marks for UID
UID, length := compute(start)
for i := 0; i < length; i++ {
key := UID[i]
fmt.Fprintf(w, key.fname, key.marks, key.lname, key.remarks)
// Save in csv
csvfile, err := os.Create("marks.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer csvfile.Close()
records := [][]string{{key.fname, key.marks, key.lname, , key.remarks}}
writer := csv.NewWriter(csvfile)
for _, record := range records {
err := writer.Write(record)
if err != nil {
fmt.Println("Error:", err)
return
}
}
writer.Flush()
// Page Footer
fmt.Fprintf(w, PageFooter, previous, next)
}
如何使用go language打印並保存(在csv中)所有10個結果?
將創建csv文件'marks.csv'的語句,即'csvfile,err ... defer ...'移出'for for循環,例如。調用'compute(start)'之後。 – putu
no沒有幫助,值在(key.fname,key.marks,key.lname,key.remarks)中,由程序生成和打印的值是正確的,唯一的事情是我需要將它成功保存在csv。 – Nancy
可能從我的第一條評論中不太清楚。您需要將語句(6行)'csvfile,err:= os.Create(「marks.csv」)...延遲csvfile.Close()'退出for循環。其他語句(來自'records:= ...')應該保持原樣。 – putu