2017-02-23 12 views
3

私はタプルのslicesliceとしてmapのすべてkey, valueを返す関数を作成しようとしているがは、外出先でのインターフェイスのスライスのスライスを作成する

ここ

コードです:

func ReturnTuples(map_ map[interface{}]interface{}) [][]interface{} { 
    toReturn := []([]interface{}) 
    ... 

しかし、私はtoReturnラインのエラーを取得しています:

type [][]interface {} is not an expression 

スライスのスライスをどのように宣言すればよいですか?私はこれを唯一の方法と考えています。

[][]interface{} 

のように、かっこなしで試してみましたが、うまくいきません。

Googleで「golang slice of slice」を検索しようとしましたが、ごくわずかなものが表示されます。たとえば、uint8という単純なものを作成する方法は、[][]uint8です。

+0

なぜ否定的な投票ですか?どのように私はそれを知るべきですか?私は[]([] interface {}){}を試みましたが、これは最も直感的でしたが動作しませんでした。私はGoogleでも何も見つけていない。 –

+0

私は落ち込んだ人ではありませんが、本当に '[] {{interface}} {}'を試しましたか?それは働くので... [遊び場に行く](https://play.golang.org/p/z8XInz95Gg) – icza

+0

@iczaはい、私は試しましたが、エラーが私のものとまったく同じであるかどうか覚えていません。しかし、ありがとう:) –

答えて

3

スライスの要素タイプがinterface{}であるため、composite literalには、追加の中括弧:[]interface{}{}が必要です。スライスのスライスの場合

toReturn := [][]interface{}{} 

またはmake()を使用しているとき、あなたはタイプ(および複合リテラルではありません)を指定します。

toReturn := make([][]interface{}, 0, len(map_)) 
+0

初期化を気にしたくなければ、これを追加するだけで、 'var toReturn [] [] interface {}'を実行することもできます。 – gkats

2

あなたは、インスタンスを作成しています型を定義していないので、変数を初期化するために余分な中括弧のペアが必要です。

toReturn := [][]interface{}{} 
関連する問題