string
( , ) ペアのキューが必要ですint
。これは簡単です:
type job struct {
url string
depth int
}
queue := make(chan job)
queue <- job{url, depth}
Goには組み込みのペア/タプルデータ型がありますか?サポートされています複数の値を返す関数から、しかし、私が知る限り、生成された複数の値のタプルは Go の型システムの第一級オブジェクトではありません。そうでしょうか?
「何を試しましたか」の部分については、明らかな構文(Pythonプログラマーの観点から)
queue := make(chan (string, int))
動作しませんでした。
ベストアンサー1
これは可能です。タプルよりも冗長に見えますが、型チェックが行われるため、大きな改善になります。
編集: Nick の提案に従って、スニペットを完全な動作例に置き換えました。プレイグラウンド リンク:http://play.golang.org/p/RNx_otTFpk
package main
import "fmt"
func main() {
queue := make(chan struct {string; int})
go sendPair(queue)
pair := <-queue
fmt.Println(pair.string, pair.int)
}
func sendPair(queue chan struct {string; int}) {
queue <- struct {string; int}{"http:...", 3}
}
匿名の構造体とフィールドは、このような手っ取り早い解決策には適しています。ただし、最も単純なケースを除いて、あなたが行ったように、名前付き構造体を定義する方がよいでしょう。