Go语言
interface
一组method的组合
type Men interface {
SayHi()
Sing(lirics string)
}
var i Men
i = mike
- 只要实现了interface中的所有函数的struct都可赋值给i;
- 把 interface 作为 函数的参数,即可实现c++中的抽象基类占位的作用;
- value, ok = element.(T) upcasting;
- 反射 t := reflect.Typeof(i)
并发
goroutine: 比线程更小粒度的单位
go hello(a, b, c)
- go 关键字 即启动了一个 goroutine
- Goexit(defer函数仍被调用)
- Gosched(让出cpu时间)
channel
goroutine 的通信
ch := make(chan int)
ch <- v # 把 v 发给 ch
v := <- ch # 从 ch 收信
- 默认 ch 的赋值 和 读值 都是阻塞的;
Buffered Channels
ch := make(chan bool, 4)
* 这样前四个元素,不阻塞;第五元素开始阻塞;
* range 可对 channel 进行 foreach
* close 可以 显示关闭 channel 不再收到消息;
* select (类似 linux 的 select);
* select同时监听多个 channels;
版权声明:本文为博主原创文章,未经博主允许不得转载。
有疑问加站长微信联系(非本文作者)