亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在一個案例中有多個選項,然后在案例中進行一個循環

在一個案例中有多個選項,然后在案例中進行一個循環

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 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號