1. ホーム
  2. go

[解決済み] Goのペア/タプルデータ型

2022-03-02 05:31:29

質問

を行いながら ツアー・オブ・ゴーの最終練習 のキューが必要だと思いました。 string , int ) のペアです。これなら簡単ですね。

type job struct {
    url string
    depth int
}

queue := make(chan job)
queue <- job{url, depth}

しかし、ここで私は考えました。Goには組み込みのペア/タプルのデータ型があるのだろうか?をサポートしています。 複数の値を返す しかし、AFAICTでは、生成される複数の値のタプルはGoの型システムでは一級市民ではありません。そうなんですか?

という部分に関しては、(Pythonプログラマーの視点から)明白な構文があります。

queue := make(chan (string, int))

はうまくいきませんでした。

解決方法は?

Goにはタプル型はありません。また、あなたの言うとおり、関数が返す複数の値は一級のオブジェクトを表さないのです。

Nickの回答は、任意の型を扱う似たようなことをする方法として interface{} . (タプルのようにインデックスを作成するために、構造体ではなく配列を使用したかもしれませんが、重要な考え方は interface{} 型)

私の別の回答では、匿名構造体を使用して型を作成することを回避する同様の方法を示しています。

これらのテクニックはタプルの特性をいくつか持っていますが、いいえ、タプルではありません。