初级会员
  • 第 18528 位会员
  • colinrs
  • 2018-05-10 14:34:41
  • Offline
  • 24 19

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 go会有悬垂指针吗?
    不会的,go有逃逸分析
  • ```go package main import ( "context" "fmt" "sync" "time" ) var wg sync.WaitGroup func main() { ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() go func() { wg.Add(2) go watch(ctx, 1) go watch(ctx, 2) wg.Wait() }() select { case <-ctx.Done(): fmt.Printf("watch %d %s\n", 0, ctx.Err()) } fmt.Println("finished") } func watch(ctx context.Context, flag int) { defer wg.Done() func() { fmt.Printf("doing something flag:%d\n", flag) time.Sleep(50 * time.Second) fmt.Println("finished flag:", flag) }() } ``` * 以上改法就可以实现你说的退出 * 你的写法程序会在 wg.wait() 上停住,等待两个协程结束,所以你的写法不会出现超时退出的情况
  • 评论了博文 四年JAVA转Go
    楼主看什么资料学习?有什么练手的项目么
  • 评论了主题 golang 切片问题
    会被gc掉
  • makemap 和 makeslice 的区别,带来一个不同点:当 map 和 slice 作为函数参数时,在函数参数内部对 map 的操作会影响 map 自身;而对 slice 却不会(之前讲 slice 的文章里有讲过)。 对这段话有点疑问,下面的代码函数f对slice 的改变已经影响到了函数f外面的值,这怎么解释呢? ``` package main import ( "fmt" ) func main() { s := []string{"a", "b"} f(s) fmt.Println(s) } func f(s []string) { s[0] = "aaaaaaaaaaaaa" } ```