https://github.com/golang/go/wiki/CommonMistakes

Posted yuanjiangw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https://github.com/golang/go/wiki/CommonMistakes相关的知识,希望对你有一定的参考价值。

CommonMistakes

 

https://golang.org/doc/faq#closures_and_goroutines

 

 

Why is there no goroutine ID? 

Goroutines do not have names; they are just anonymous workers. They expose no unique identifier, name, or data structure to the programmer. Some people are surprised by this, expecting the go statement to return some item that can be used to access and control the goroutine later.

The fundamental reason goroutines are anonymous is so that the full Go language is available when programming concurrent code. By contrast, the usage patterns that develop when threads and goroutines are named can restrict what a library using them can do.

Here is an illustration of the difficulties. Once one names a goroutine and constructs a model around it, it becomes special, and one is tempted to associate all computation with that goroutine, ignoring the possibility of using multiple, possibly shared goroutines for the processing. If the net/http package associated per-request state with a goroutine, clients would be unable to use more goroutines when serving a request.

Moreover, experience with libraries such as those for graphics systems that require all processing to occur on the "main thread" has shown how awkward and limiting the approach can be when deployed in a concurrent language. The very existence of a special thread or goroutine forces the programmer to distort the program to avoid crashes and other problems caused by inadvertently operating on the wrong thread.

For those cases where a particular goroutine is truly special, the language provides features such as channels that can be used in flexible ways to interact with it.

以上是关于https://github.com/golang/go/wiki/CommonMistakes的主要内容,如果未能解决你的问题,请参考以下文章

golang开发不错的参考资料

go,gcvis,golang

使用Golang的官方mock工具--gomock

golang环境protocol buffer的安装

盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目

[Go] go get获取官方库被墙解决