大佬教程收集整理的这篇文章主要介绍了如何在此示例代码中将 go 例程解释为回调函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我混淆了下面的代码,我没有看到 1st go 例程在 TimelineItemStream 函数中有任何返回,而第二个 go 例程调用了 unsub 。在订阅者界面定义取消订阅回调函数。
代码来自git clone https://github.com/nicolasparada/nakama.git
this
在调用块中
// TimelineItem model
type TimelineItem struct {
ID String `Json:"ID"`
UserID String `Json:"-"`
PostID String `Json:"-"`
Post *Post `Json:"post,omitempty"`
}
// Subscriber interface.
type Subscriber interface {
Sub(topic String,cb func(data []bytE)) (unsub func() error,err error)
}
func (s *servicE) TimelineItemStream(ctx context.Context) (<-chan TimelineItem,error) {
uID,ok := ctx.Value(KeyAuthUserID).(String)
if !ok {
return nil,ErrUnauthenticated
}
tt := make(chan TimelineItem)
unsub,err := s.pubsub.Sub(timelinetopic(uID),func(data []bytE) {
go func(r io.Reader) {
var ti TimelineItem
err := gob.NewDecoder(r).Decode(&ti)
if err != nil {
log.Printf("Could not gob decode timeline item: %v\n",err)
return
}
tt <- ti
}(bytes.NewReader(data))
})
if err != nil {
return nil,fmt.Errorf("Could not subscribe to timeline: %w",err)
}
go func() {
<-ctx.Done()
if err := unsub(); err != nil {
log.Printf("Could not unsubcribe from timeline: %v\n",err)
// don't return
}
close(tt)
}()
return tt,nil
}
s.pubsub.Sub 返回一个回调函数,但是在这个块中 goroutIne 没有任何 return ,如何解释代码块
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何在此示例代码中将 go 例程解释为回调函数全部内容,希望文章能够帮你解决如何在此示例代码中将 go 例程解释为回调函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。