为了账号安全,请及时绑定邮箱和手机立即绑定

在一个案例中有多个选项,然后在案例中进行一个循环

在一个案例中有多个选项,然后在案例中进行一个循环

Go
慕容708150 2022-06-06 15:43:48
我有一个接受 interface{} 的函数,然后我对类型进行切换,大小写,如果它是切片,我想遍历元素。我遇到的问题是我在案例选择器中不能有多个选项,例如我似乎不能有 []int, []float32 然后在值上做一个范围。我想做的是这样的func digestCollection(obj interface{}) ([]byte, error) {    switch v := obj.(type) {    case []int64, []float64:      for _, values := range v {        // do something with v whether its an int or float     }    }}但是我收到一个错误,说我无法迭代接口。去
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

在类型切换中,如果存在单一类型案例,v则为该类型:


switch v:=obj.(type) {

   case []int64:

     // Here, v is []int64

   case []float64:

     // here, v is []float64

}

但是,如果有多种情况,或者如果它是默认情况,则类型 ofv是 的类型obj:


switch v:=obj.(type) {

   case []int64,[]float64:

   // Here, type of v is type of obj

因为v如果它是 int 数组或 float64 数组,则不能有明确的类型。为两者生成的代码会有所不同。


您可以尝试使用反射来遍历数组,或者编写两个循环,一个用于 int,一个用于 float64。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号