假設(shè)我有一個接口:type Module interface { Run(moduleInput x) error // x is the type of moduleInput}每個“模塊”都將實現(xiàn)Run功能。然而,這moduleInput不是一個單一的結(jié)構(gòu)——它應(yīng)該能夠接受任何結(jié)構(gòu)但只允許結(jié)構(gòu),即不是interface{}(比如,只有moduleAInputs和moduleBInputs結(jié)構(gòu))。理想情況下Run,每個模塊的函數(shù)都具有moduleXInputX 是示例模塊的類型。moduleInput是否可以使用泛型或其他方式來限制類型?
1 回答

呼啦一陣風
TA貢獻1802條經(jīng)驗 獲得超6個贊
使用通用接口,限制為要限制的類型的聯(lián)合:
// interface constraint
type Inputs interface {
moduleAInputs | moduleBInputs
}
// parametrized interface
type Module[T Inputs] interface {
Run(moduleInput T) error
}
請注意,該接口Module[T]
現(xiàn)在可以由其方法與該接口的實例化相匹配的類型來實現(xiàn)。有關(guān)對此的全面解釋,請參閱:如何實現(xiàn)通用接口?
- 1 回答
- 0 關(guān)注
- 88 瀏覽
添加回答
舉報
0/150
提交
取消