初级会员
  • 第 17679 位会员
  • zhaozonglu
  • zoro
  • 2018-04-10 14:44:49
  • Offline
  • 20 11

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 for和协程问题
    你遇到的这个问题应该不是for和协程的问题. ``` func main() { for i := 0; i < 1; i++ { go func(i int) { defer func() { fmt.Println("end-----") }() fmt.Printf("%d goroutine\n", i) res, err := http.Get("http://www.baidu.com") // 这里使用http正常,当使用https时和你的情况类似 if err != nil { panic(err) } fmt.Println(res) }(i) } for { } } ``` 不过还是很难解释你遇到的问题
  • 评论了主题 for和协程问题
    #1 @1824611967 程序最后加了 `for{}` 让`main`停留在了这里
  • 直接go run 也没问题呀,等待三秒,打印出call
  • value使用指针,如果直接用`point.value1=a`这样赋值的话,会panic吧,空指针呀 ``` type Student struct { Name1 string Name2 string Name3 string Name4 string } func main() { stus := map[string]*Student{} stus["stu001"].Name1 = "a" //这里会报 panic: runtime error: invalid memory address or nil pointer dereference stus["stu001"].Name2 = "b" stus["stu001"].Name3 = "c" stus["stu001"].Name4 = "d" fmt.Println(stus) } ``` 如果value不用指针 `stus := map[string]Student{}` 不能使用 `stus["stu001"].Name1 = "a" `直接赋值,编辑就会报错 `cannot assign to struct field stus["stu001"].Name1 in map` 而 `stus := &map[string]Student{}` 更是不对,因为这个时候 stus是一个指针类型 `*map[string]Student` 不支持indexing,编译会报`type *map[string]Student does not support indexing` 正确为使用为 ``` stus := map[string]Student{} stus["stu001"] = Student{Name1: "a", Name2: "b"} ``` 或者 ``` stus := map[string]*Student{} stus["stu001"] = &Student{Name1: "a", Name2: "b"} ```
  • ``` strTime := "2018-03-24T20:01:00+08:00" t, err := time.ParseInLocation("2006-01-02T15:04:05+08:00", strTime, time.Local) ```