初级会员
  • 第 20436 位会员
  • moonlightfwq
  • 2018-07-17 18:58:52
  • Offline
  • 21 58

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 求牛人指点迷津。
    如果只是聊天室的话,简单的使用消息队列可以实现个简单的聊天室功能,当然上面的那位哥们 已经总结的很彻底了。
  • #2 @lipengfeihb 那我觉得你原来的代码也没什么问题,反正计时结束,程序返回了超时,至于是否有goroutine在运行我觉得其实不是非常需要关心。我觉得超时的主要目的是为了防止长时间等待造成程序无返回。
  • 第一点 我感觉你超时的用法有点错误了。 cancleFun()这个函数在你的代码中是无效的。这个函数的作用只有通知ctx.Done。而你使用WithTimeout倒计时结束后也会通知ctx.Done(). 第二点 超时结束不是程序就马上结束。你需要在代码层面进行处理才能结束,实际上他只有一个通知ctx.Done一个功能。 如果你想让你的goroutine在超时的时候结束,也很简单,主函数中相似的逻辑 实现在 goroutine中就可以了。 ``` //处理任务 func handleTask(ctx context.Context, ch chan bool, taskId int) { for i := 0; i < 5; i++ { select { case <-ctx.Done(): return default: time.Sleep(time.Second) fmt.Println(fmt.Sprintf("处理任务 %d:%d, %v", taskId, i, time.Now())) } } ch <- true } ```
  • 评论了主题 新手这个语法看不懂
    ``` 这个可以理解为一种类型。 struct { StudId int `!;>0` LatestId int `!;>0` } ``` 对比下面两种用法可以很明显看出原因 ``` type Stu struct { StudId int `!;>0` LatestId int `!;>0` } type Stu map[string]int ```
  • 评论了博文 Go 语言的指针切片
    我不知道我是否可以这么理解: 在for块中使用的numberString是块外的对象,该对象进行了一次声明,所以地址一直没有改变 而第二次操作,每次循环都进行了对象的声明 所以每次都分配了空间。 直接使用 := 效果是相同的