簡體   English   中英

在Go中傳遞任意切片

[英]Passing arbitrary slices in Go

我正在編寫一個函數,該函數從數據庫中檢索任意數據,並返回包含結果的結構片段。 數據結構由用戶在ItemFactory中定義。 然后,用戶在工廠上實現創建空結構的方法:

func (t Example) GenerateEmptyItem() interface{} {
    return &Example{}
}

我試圖對Example片段執行相同的Example 我需要能夠使用返回的任何內容來調用len()函數,同時保持其通用性,以允許其由“通用”函數返回。

我不能簡單地擁有這樣的東西,因為對一片接口的基礎數據分配與一系列示例不同:

func (t Country) GenerateEmptyItems() []interface{} {
    return []Country{} //Error
}

是否可以使用指向切片的指針,例如&[]Example{}並將其作為interface{}傳遞,然后仍然可以將其用作切片? 還是我要解決這個錯誤?記住,我在編譯時不知道數據的類型,所以我不能簡單地進行轉換。

感謝您的幫助。 讓我知道是否可以澄清任何事情。

您不能完全直接這樣做。

您可以使用反射 ,但這不是一個很好的解決方案。 通常的方法是定義一個接口類型,讓您以相同的方式與所有數據進行交互。 排序包就是一個很好的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM