Goのペア/タプルデータ型 質問する

Goのペア/タプルデータ型 質問する

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}
}

匿名の構造体とフィールドは、このような手っ取り早い解決策には適しています。ただし、最も単純なケースを除いて、あなたが行ったように、名前付き構造体を定義する方がよいでしょう。

おすすめ記事