go 接口interface
接口interface
go 中以关键字interface代表接口interface 可以用于多态, 还可以接受任意数据类型, 类似void
用例:
package main
import (
"fmt"
)
func main() {
var q, w, e interface{} // 空接口
n2 := []string{"haha", "xixi"}
q = n2
fmt.Printf("this is n2: %v \n", q)
n3 := 10
w = n3
fmt.Printf("this is n3: %d \n", w)
n4 := "dd"
e = n4
fmt.Printf("this is n4: %s \n", e)
// 判断interface 代表的数据的类型
kvalue, ok := e.(string)
if !ok {
fmt.Print("k 不是int")
} else {
fmt.Printf("value: %v", kvalue)
}
// 最常用的场景: 把interface 当成一个函数的参数,使用switch来判断用户输入的不同数据类型
// 根据不同类型,做出不同逻辑处理
// 创建三个接口类型的切片
array := make([]interface{}, 3)
array[0] = 10
array[1] = "hello"
array[2] = true
for _, value := range array {
switch v := value.(type) {
case string:
fmt.Print(" IS string: ", v)
case int:
fmt.Print(" is int: ", v)
case bool:
fmt.Print(" is bool: ", v)
}
}
}

浙公网安备 33010602011771号