首先说我对 Go 语言相当陌生。
我的程序采用 CSV 并将每一行作为 [] 字符串读取,并将它们全部添加到切片中。程序的另一部分应该向包含新信息的切片添加另一个条目,但我不知道如何将新条目声明为类型 []string。如果它尝试使用结构、代码、[]Customer 类型与 []string 类型不兼容。如果我在开始时将 []string 切片转换为 []Customer 类型,我将失去能够在每个条目的某些部分使用 time.Parse 的功能。我无法将新条目声明为类型 []string。有什么办法可以做到这一点吗?用于读取 CSV 并添加到 []string 类型的切片的代码。
var customerInfo [][]string
for {
record, err := reader.Read()
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
customerInfo = append(customerInfo, record)
}
time.Parse 功能和更新 [] 字符串的一列的代码。
today := time.Now()
for i, e := range customerInfo {
if i > 0 {
lastOilChange, err := time.Parse("2006-01-02", e[4])
if err != nil {
panic(err)
}
diff := today.Sub(lastOilChange)
diffInMonths := float64(diff.Hours() / 24 / 30)
if diffInMonths > 6 {
e[6] = today.Format("2006-01-02")
}
}
}
用于向 CSV 添加新行的代码(目前唯一不工作的部分)
var newCust []string = {"1500", "Your Name", "Make Model", "City", "date1", "date2", "date3", "date4"}
customerInfo = append(customerInfo, newCust)
当我使用向 CSV 添加新行的代码运行此程序时遇到的错误是
syntax error: unexpected {, expected expression
复合文字缺少类型。添加这样的类型:
注意第二个
[]string
。无需重复类型。使用此代码:
甚至更短: