golang——接口
- 空接口:我感觉类似于泛型,什么参数都可以传递
var a = interface{}
func a(a ...interface{})
- 断言:两种情况,一种是空接口断言,一种是接口断言
空接口断言
type a interface{}
func main(){
var a = "true"
if _,ok := a.(bool);ok{
fmt.Println("数据类型是bool")
}else{
fmt.Println("不是bool")
}
}
含有方法的接口
type Usb interface{
start()
stop()
}
type Phone struct{}
func (p Phone) start() {
fmt.Println("手机开机")
}
func (p Phone) stop() {
fmt.Println("手机关机")
}
type Camera struct{}
func (c Camera) start() {
fmt.Println("摄像机开机")
}
func (c Camera) stop() {
fmt.Println("摄像机关机")
}
type Computer struct{}
func (c Computer) work(u Usb){
switch u.(Type){
case Phone:
u.start()
case Camera:
u.stop()
}
}
func main(){
var computer := Computer{}
var phone := Phone{}
var camera := Camera{}
computer.work(phone)
computer.work(camera)
}
//手机开机
//摄像机关机
总结
- 接口的方法需要全部实现否则会报错
- 通过断言可以知道实现接口的类的数据类型