公司网站首页设计,上海网站推广,如何找人帮我做网站推广,wordpress高阶教程1.概念
golang接口是一个动态类型和动态值的集合#xff0c;定义了对象的行为#xff0c;不指定实现。只要一个类型定义了接口全部的方法#xff0c;就可被认为是实现接口 **动态类型#xff1a;**实现接口的具体数据类型 **动态值#xff1a;**实现接口的数据的值或者引…1.概念
golang接口是一个动态类型和动态值的集合定义了对象的行为不指定实现。只要一个类型定义了接口全部的方法就可被认为是实现接口 **动态类型**实现接口的具体数据类型 **动态值**实现接口的数据的值或者引用
//定义接口
type Speaker interface{Speak()
}//实现接口的类型
type Duck struct{}//实现接口要求的方法
func (Duck)Speack(){fmt.Println(lalala)
}func main(){var s Speaker Duck{} //接口赋值s.Speack() //接口方法调用
}2.接口类型断言与类型判断
类型断言
value : interfaceValue.(T)//返回两个值提取的值和一个布尔值 ok,如果断言成功ok 为 true否则为 false
value, ok : interfaceValue.(T)func main() {var i interface{} 42// 类型断言不安全不匹配会panicv : i.(int) // 成功v 是 int 类型fmt.Println(v)// 类型断言安全v2, ok : i.(float64)if ok {fmt.Println(Success:, v2)} else {fmt.Println(Type assertion failed)}
}类型判断
switch v : interfaceValue.(type) {
case T1:// interfaceValue 的动态类型是 T1
case T2:// interfaceValue 的动态类型是 T2
default:// interfaceValue 的动态类型是其他
}3.接口的nil判断
当接口的type和value都为nil时接口本身才为nil 接口赋值为nil时接口类型不为nil,所以接口 参考面试鸭