Go

go语言仅支持封装,不支持继承和多态;没有class只有struct.

类型与接口关系

一个类型可以同时实现多个接口,而接口间彼此独立,不知道对方的实现。
Go语言中不同的类型可以实现同一个接口

接口的主要工作是仅提供由方法名、输入参数、返回类型组成的方法签名集合。由类型(例如结构体)来声明方法并实现他们。如果一个类型实现了在接口中定义的签名方法,则称该类型实现该接口。

因为是动态,我们可以为不同类型分配新的结构,也实现接口。通过动态保持对基础类型的引用,接口也是以类似的方式工作。

空接口

当接口没有方法时,它被称为空接口。 这由interface{}表示。 由于空接口没有任何方法,空接口类型的变量可以存储任意类型的变量。。

类型断言

可以使用语法i.(Type)找出接口的基础动态值,其中i是接口,Type是实现接口i的类型。 Go将检查i的动态类型是否与Type相同。这样就可以将没有实现的接口实现。switch中

在类型断言语法i.(Type)中,如果Type没有实现接口(类型)i那么go编译器会抛出错误。 但是如果Type实现了接口,但是我没有Type的具体值,那么go将在运行时出现混乱。

另一种类型断言语法的变体,即

value, ok := i.(Type)

在上面的语法中,我们可以检查使用ok变量,如果Type实现接口(类型)i,我有具体类型Type。 如果是,那么ok将为true,否则为false,value为struct的零值。

接口不能实现其他接口或扩展它们,但我们可以通过合并两个或多个接口来创建新接口。

嵌入式接口也必须实现该接口;

接口变量自带指;接口变量采用值传递,几乎不使用指针传递;指针接受者实现只能以指针的方式使用,值接受者都可以;

多态

GO语言通过接口模拟多态。

 

goroutine 和主线程一样 并驾齐驱 是并发执行的, 需要交出控制权,如果不交出就会出现死机的情况,异步io/runtime.Gosched()/select(default)/channel/函数调用;channel也可以加缓冲区make(chan int , 3);channel 是可以close的,这是发送方决定的,接收方可以通过 n, ok := <- c来判断 也可以通过  for n := range c  {}来判断,发送完就不接受了,async waitGroup等待多任务结束

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值