interface{}
interface{}
接口、interface{}
類型很多人都會混淆。interface{}
類型是沒有方法的接口。由於沒有 implements
關鍵字,所以說所有的類型都至少實現了 0 個方法,所有類型都實現了空接口。這意味着,如果編寫一個函數以 interface{}
值作為參數,那么你可以為該函數提供任何值。例如:
func DoSomething(v interface{}) {
// ...
}
第一種知道是什么類型
如果知道是什么類型的話,就可以直接轉
// 假設 v 為 string或int64或float64
func DoSomething(v interface{}) {
string1 := v.(string)
int1 := v.(int64)
float1 := v.(float64)
}
第二種不知道是什么類型
這時候就可以使用類型斷言,然后再轉為具體類型
func interface2Type(i interface{}) {
switch i.(type) {
case string:
fmt.Println("string", i.(string))
break
case int:
fmt.Println("int", i.(int))
break
case float64:
fmt.Println("float64", i.(float64))
break
}
}
func main() {
interface2Type("niuben")
interface2Type(1122)
interface2Type(11.22)
}
輸出
string niuben
int 1122
float64 11.22