56

Go に 2 つの値を返す関数があります。これをゴルーチンとして実行したいのですが、2 つの値を受け取るチャネルを作成するための構文がわかりません。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

17

別のオプションは、次のような anon 関数を使用することです。

package main

import "fmt"

func f(c chan func() (int, string)) {
    c <- (func() (int, string) { return 0, "s" })
}

func main() {
    c := make(chan func() (int, string))
    go f(c)
    y, z := (<-c)()
    fmt.Println(y)
    fmt.Println(z)
}

https://gist.github.com/slav/ca2ee333c29b8f76b557c9b10b371b52へのクレジット

于 2018-06-14T12:10:26.867 に答える