3 回答

TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊
在您的場景中,我會做的是接受參數(shù)中帶有空接口的任何類型,然后在內(nèi)部使用類型斷言來確認(rèn)它是您想要的類型。
if t1, ok := interfaceInput.(t1); !ok{
// handle it being the wrong type here
return
}
此外,如果您想要數(shù)據(jù)類型與其方法(即對象)之間的緊密耦合,那么將它作為對象的方法有什么問題呢?

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊
您可以使用[]interface{}
for “任何類型的切片”,但是您可以使用類型斷言和/或類型開關(guān)來發(fā)現(xiàn)該切片成員的實際運行時類型。
在Go 之旅中了解有關(guān)空接口的更多信息
現(xiàn)在想要制作一個可以同時容納 t1 和 t2 但沒有其他東西的切片。
這是一個非常不尋常的要求,您在 Go 中不太可能需要它。但是您也可以通過以下方式進(jìn)行自己的受歧視聯(lián)合:
type item struct {
typeSelector int
t1Value t1
t2Value t2
}
然后使用[]item,typeSelector在運行時檢查以查看填充了哪個值。
或者,您甚至可以使用*t1and*t2和 havenil表示“此字段中沒有值”。
- 3 回答
- 0 關(guān)注
- 183 瀏覽
添加回答
舉報