我是 GoLang 的新手,我需要一些帮助。我正在制作简单的 API 应用程序。
通过 API 将结构传递给切片如下所示:
type Struct struct {
//some records
}
var structs []Struct //slice
func SetStruct(w http.ResponseWriter, req *http.Request) {
var st Struct
decoder := json.NewDecoder(req.Body)
decoder.Decode(&st)
emails = append(structs, st)
json.NewEncoder(w).Encode(structs)
}
而且该功能工作正常。
我想做的第二件事是从切片中删除该结构取决于NR
参数。我称之为POST
。方法如下所示:
func SendStruct(w http.ResponseWriter, req *http.Request) {
var st Email
decoder := json.NewDecoder(req.Body)
decoder.Decode(&st)
for i, item := range emails {
if item.NR == st.NR {
structs = append(structs[:i], structs[i+1:]...)
//if numbers match, delete from slice emails
}
}
json.NewEncoder(w).Encode(emails)
}
当我有这样的场景时它工作得很好(例如):
{"NR": "22"}
{"NR": "33"}
{"NR": "22"}
当我想删除"33"
时,它工作得很好。当我想删除"22"
(两者)时,事情开始变得复杂,因为当我通过时22
,应用程序崩溃。
在item.NR
(从SendStruct
)我得到变量超出范围。当我在其中添加break
参数时for
,它可以正常工作,但我只能一个接一个地删除结构。我想22
在一个 API 调用中删除所有内容。我得到的错误:
http:恐慌服务 [::1]:52163:运行时错误:切片超出范围
感谢您的任何建议!