golang,int类型不支持索引
发布时间:2020-12-16 09:22:13 所属栏目:大数据 来源:网络整理
导读:我在部分代码中遇到了麻烦.我正在写revel框架(要清楚).这是一个工作日常规,我希望它做几件事: 切换stat变量的struct类型 来源,即将来临.我做了一个开关,但在所有其他之前 代码是正确的,我真的不知道是否写了开关 正常. 我获取日期的缓存,并将其放入新的工作
我在部分代码中遇到了麻烦.我正在写revel框架(要清楚).这是一个工作日常规,我希望它做几件事:
>切换stat变量的struct类型 这是我现在得到的: func worker(in <-chan Task,out chan <- Work,wg *sync.WaitGroup) { for t := range in { for sourceName,charts := range t.Request.Charts { var stat interface{} switch sourceName { case "noagg": stat = stat.([]NoaggModel) case "oracle": stat = stat.([]OracleModel) default: panic("Invalid type for Work model!") } w := Work{Name:"",Data:""} err := cache.Get(string(sourceName)+"_"+string(t.Date),&stat); for chart := range charts{ w.Name = chart["name"] if err == nil{ w.Data = countDataByName( stat,t.Request.Filters,string(chart["name"])) } out <- w } } } wg.Done() // this worker is now done; let the WaitGroup know. } 但是现在我得到了无效操作的错误:chart [“name”](类型int不支持索引) 但我结构: type Chart struct { Name string `json:"name"` Type string `json:"type"` } type Filter struct { DayStart string `json:"dayStart"` DayEnd string `json:"dayEnd"` TimePeriods interface{} `json:"timePeriods"` Lines []string `json:"lines"` } type Task struct { Date string Request ChartOptins } type Work struct { Name string Data interface{} } 如果缓存的结构类型可能不同,我应该如何以更好的方式编写正确的开关,为什么我的名称添加错误并且调用错误? 解决方法
切片中的for缺少变量
for chart := range charts{ 在切片上迭代时,第一个变量是键,第二个变量是您想要的实际值.在这种情况下,您可以省略键(int),因此应该正确的指令 for _,chart := range charts{ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |