[解決済み] ゴルーチンからの戻り値をキャッチする
2022-11-14 18:57:53
質問
以下のコードは、コンパイル時に「unnexpected go」というエラーが発生します。
x := go doSomething(arg)
func doSomething(arg int) int{
...
return my_int_value
}
goroutineを使わずに普通に関数を呼び出したり、チャンネルを使ったりすれば、返り値を取得できることは知っています。
私の質問は、なぜgoroutineからこのように戻り値を取得することができないのか、ということです。
どのように解決するのですか?
厳密な回答としては ができます。 ということです。ただ、おそらく良いアイデアではないでしょう。以下はそれを行うコードです。
var x int
go func() {
x = doSomething()
}()
これは新しいゴルーチンを生成し、そのゴルーチンが
doSomething()
を計算し、その結果を
x
. 問題は、どのようにして
x
をどのように使うのか?おそらく、レースコンディションを発生させないために、スポーンされたゴルーチンを確実に終了させたいと思うことでしょう。しかし、そうしたいのであれば、ゴルーチンと通信する方法が必要です。もし、その方法があるのであれば、値を送り返すためにそれを使えばいいのではないでしょうか?
関連
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] GoのToString()関数
-
[解決済み] Goでスライスを逆に反復処理する方法はありますか?
-
[解決済み] マップから構造体への変換
-
[解決済み] ゴルーチンのスタックトレースをダンプするには?
-
[解決済み] テキストファイルを文字列配列に読み込む(そして書き込む)
-
[解決済み] bytes.Buffer does not implement io.Writer" というエラーメッセージが表示される。
-
[解決済み] golangのスライスで要素を検索する方法
-
[解決済み] ローカルファイルからio.Readerを作成する
-
[解決済み] golangにおけるバックティック(``)とダブルクォート("")の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン