質問
同時メソッドを取得する方法は?
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()
?それとも、同時にする必要がありますか?
解決
を見てください 例パッケージ GO言語仕様のセクションは、GOステートメントとチャネルを使用して、同時プライムふるいを実装する完全なGOパッケージです。
それがどのように機能するかの詳細な説明については、GOチュートリアルセクションを参照してください 素数. 。また、GOチュートリアルセクションをご覧ください 多重化.
効果的なGOセクションを読んでください 並行性.
最後に、GO言語仕様の関連セクションを読む GOステートメント, チャネルタイプ, 、 と ステートメントを選択します.
はい、get()メソッドから別のメソッドを呼び出すことができます。メソッドコールは同時GOステートメントではないため、次のステートメントを実行する前にすぐに実行されます。
他のヒント
GOで同時性を得る方法は、同時に実行する関数の前でキーワード「GO」を使用することです。
func bar(){...}
func foo(){go bar()go bar()go bar()...すべてのバーが閉じるのを待つコード...}}
それは、同時に3つのバーを走らせるのに必要なすべてです。 PS:慣れ親しんでいる言語で例を提供することをお勧めします。C++ / Perl / Python /何でも、GOコードフラグメントが含まれていたので、あまり役に立ちませんでした。私はあなたが私があなたの母国語を話すよりもおそらく英語をよりよく話すことを知っていますが、あなたはあなたの質問をより明確に策定するための支援を得たいかもしれません。
hotei