>切换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{总结
以上是内存溢出为你收集整理的golang,int类型不支持索引全部内容,希望文章能够帮你解决golang,int类型不支持索引所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)