先看k8s源码中的实现方式
核心代码如下:
// RESTStorage is a generic interface for RESTful storage services
type RESTStorage interface {
List(labels.Selector) (interface{}, error)
Get(id string) (interface{}, error)
Delete(id string) (<-chan interface{}, error)
Extract(body string) (interface{}, error)
Create(interface{}) (<-chan interface{}, error)
Update(interface{}) (<-chan interface{}, error)
}
func MakeAsync(fn func() interface{}) <-chan interface{} {
channel := make(chan interface{}, 1)
go func() {
defer util.HandleCrash()
channel <- fn()
}()
return channel
}