For loop 在for循环中使用AtoI时出错
我是go lang的新手,我确信我遗漏了一些非常基本的东西,但是因为我已经搜索了网络,没有找到任何东西来帮助我理解我的问题,我想我会把它贴在这里。本质上,我试图做的是一个从字符串到int的简单转换。字符串以字符串表示的数值形式到达(即“1”);我想把它改成int等值,这样我就可以在开关中使用它了。。。案例我尝试了Atoi和parseInt,但都失败了,出现了相同的错误:For loop 在for循环中使用AtoI时出错,for-loop,go,For Loop,Go,我是go lang的新手,我确信我遗漏了一些非常基本的东西,但是因为我已经搜索了网络,没有找到任何东西来帮助我理解我的问题,我想我会把它贴在这里。本质上,我试图做的是一个从字符串到int的简单转换。字符串以字符串表示的数值形式到达(即“1”);我想把它改成int等值,这样我就可以在开关中使用它了。。。案例我尝试了Atoi和parseInt,但都失败了,出现了相同的错误: ./test.go:1765: cannot use v (type []string) as type string in
./test.go:1765: cannot use v (type []string) as type string in argument to strconv.Atoi
我试图先将它分配给一个字符串,然后将它传递给Atoi,但仍然无法工作
代码如下:
r.ParseForm()
for k, v := range r.Form {
if k == "StartPicker" && strings.Join(v, "") != "" {
layout := dateLayout
startDate, err = time.Parse(layout, strings.Join(v, ""))
if err != nil {
fmt.Println("time.Parse() err:", err)
}
} else if k == "EndPicker" && strings.Join(v, "") != "" {
layout := dateLayout
endDate, err = time.Parse(layout, strings.Join(v, ""))
if err != nil {
fmt.Println("time.Parse() err:", err)
}
} else {
fmt.Printf("k = %s\n", k)
if k == "FilterType" {
fmt.Printf("this is the variable filterType: %s\n", v)
time, sqlFilter := strconv.Atoi(v)
if err != nil {
// handle error
fmt.Println("Atoi broken err:", err)
}
} else if k == "MSISDN" {
msisdn := v
}
}
}
这是因为
v
是一个[]字符串
(字符串片段),而不是字符串
(Atoi
接受的内容)<代码>请求。表单是字段名到值的映射;由于HTML表单允许使用相同名称的多个字段,因此这些值必须保存在一个切片中。您可以尝试v[0]
获取字段的第一个值,这可能会或可能不会满足您的要求-我不能确定,因为您没有详细说明您要实现的目标。这是因为v
是一个[]字符串(字符串的一部分),而不是字符串(Atoi
接受的内容)<代码>请求。表单
是字段名到值的映射;由于HTML表单允许使用相同名称的多个字段,因此这些值必须保存在一个切片中。您可以尝试v[0]
获取字段的第一个值,该值可能会做您想做的事情,也可能不会做您想做的事情-我不能肯定,因为您没有详细说明您要完成的事情。错误告诉您正在将[]字符串
传递给字符串
参数
如果应用程序不使用表单字段的多个值,并且应用程序不需要区分缺少的表单字段和“”,则通常会调用以获取表单值。此方法返回键的第一个值,如果键不存在,则返回“”
不需要在表单字段上循环。只要取你想要的字段
下面是如何编写上面的代码
var startDate time.Time
if v := r.FormValue("StartPicker"); v != "" {
var err error
startDate, err = time.Parse(dateLayout, v)
if err != nil {
// handle error
}
}
var endDate time.Time
if v := r.FormValue("EndPicker"); v != "" {
var err error
startDate, err = time.Parse(dateLayout, v)
if err != nil {
// handle error
}
}
var filterType int
if v := r.FormValue("FilterType"); v != "" {
var err error
filterType, err = strconv.Atoi(v)
if err != nil {
// handle error
}
}
msisdn := r.FormValue("MSISDN")
如果希望客户机指定一个字段,那么如果v:=r.FormValue(“key”),则删除;v!=无业务
filterType, err = strconv.Atoi(r.FormValue("FilterType"))
if err != nil {
// handle error
}
错误告诉您正在将[]字符串
传递给字符串
参数
如果应用程序不使用表单字段的多个值,并且应用程序不需要区分缺少的表单字段和“”,则通常会调用以获取表单值。此方法返回键的第一个值,如果键不存在,则返回“”
不需要在表单字段上循环。只要取你想要的字段
下面是如何编写上面的代码
var startDate time.Time
if v := r.FormValue("StartPicker"); v != "" {
var err error
startDate, err = time.Parse(dateLayout, v)
if err != nil {
// handle error
}
}
var endDate time.Time
if v := r.FormValue("EndPicker"); v != "" {
var err error
startDate, err = time.Parse(dateLayout, v)
if err != nil {
// handle error
}
}
var filterType int
if v := r.FormValue("FilterType"); v != "" {
var err error
filterType, err = strconv.Atoi(v)
if err != nil {
// handle error
}
}
msisdn := r.FormValue("MSISDN")
如果希望客户机指定一个字段,那么如果v:=r.FormValue(“key”),则删除;v!=无业务
filterType, err = strconv.Atoi(r.FormValue("FilterType"))
if err != nil {
// handle error
}