如何获得并发方法?
type test struct {
foo uint8
bar uint8
}
func NewTest(arg1 string) (*test, os.Error) {...}
func (self *test) Get(str string) ([]byte, os.Error) {...}
我认为方法Get()
的所有代码都应该放在go func()
的内部,然后才能使用通道。
func (self *test) Get(str string) ([]byte, os.Error) {
go func() {
// Code for this method.
}()
}
Get()
调用另一种方法会有问题吗?或者它也必须是并发的?答案 0 :(得分:1)
在go中获得并发的方法是在要同时执行的函数前面使用关键字“go”:
func bar(){...}
func foo(){ 去吧() 去吧() 去吧() ...等待所有栏关闭的代码...... }
这就是同时运行3个酒吧所需的一切。 PS:你可能想用你熟悉的语言C ++ / Perl / Python /提供一个例子,因为你所包含的go代码片段没什么用处。我意识到你说英语比说母语时更好,但你可能也希望得到一些帮助来更清楚地表达你的问题。
布袋
答案 1 :(得分:1)
查看Go Go语言规范中的An example package部分,该部分是一个完整的Go包,使用go语句和通道实现并发主筛。
有关其工作原理的详细说明,请参阅Prime numbers上的Go Tutorial部分。另外,请查看Multiplexing上的Go Tutorial部分。
阅读Concurrency上的Effective Go部分。
最后,阅读The Go Language Specification的相关章节,例如Go statements,Channel types和Select statements上的部分。
是的,您可以从Get()方法调用另一个方法。由于方法调用不是并发go语句,因此它将在执行下一个语句之前立即执行。