2014-12-02 74 views
2

我想傳遞一個字符串數組到方法。雖然經過斷言,我得到這個錯誤不能使用臨時(類型接口{})作爲類型[]字符串參數equalStringArray:需要類型斷言

cannot use temp (type interface {}) as type []string in argument to equalStringArray: need type assertion 

代碼:

if str, ok := temp.([]string); ok { 
    if !equalStringArray(temp, someotherStringArray) { 
     // do something 
    } else { 
     // do something else 
    } 
} 

我也試着檢查與reflect.TypeOf(temp)類型而這也是印刷[]string

回答

2

您需要使用str,不是臨時的

請參閱:https://play.golang.org/p/t9Aur98KS6

package main 

func equalStringArray(a, b []string) bool { 
    if len(a) != len(b) { 
     return false 
    } 
    for i := 0; i < len(a); i++ { 
     if a[i] != b[i] { 
      return false 
     } 
    } 
    return true 
} 

func main() { 
    someotherStringArray := []string{"A", "B"} 
    var temp interface{} 
    temp = []string{"A", "B"} 
    if strArray, ok := temp.([]string); ok { 
     if !equalStringArray(strArray, someotherStringArray) { 
      // do something 1 
     } else { 
      // do something else 
     } 
    } 
} 
+0

謝謝,就是這樣:) – Fallen 2014-12-02 08:22:23

相關問題