2017-02-23 52 views
3

我試圖創建一個返回的map的所有key, value作爲元組的slice一個slice功能(其中每個元組是{key, value}在旅途中創建的接口片段的片段

下面的代碼:

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

但我發現了錯誤的toReturn行:

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

我應該如何聲明一片接口?我認爲這是唯一的方法。我嘗試沒有括號如:

[][]interface{} 

但它也不會工作。

我試圖在google上搜索'golang切片',但很少有東西出現。例如,我只找到了如何創建一個簡單的uint8,即:[][]uint8

+0

爲什麼是反面投票?我應該怎麼知道它?我試過[]([] interface {}){}這是最直觀的,但沒有奏效。我也沒有發現谷歌。 –

+0

我不是那個downvoted的人,但是你真的嘗試過'[]([] interface {}){}'嗎?因爲那個作品... [Go Playground](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{}{}