目前我有这样的类型:
package hello
type object map[string]any
func add[T any](obj object, key string, val T) {
switch value := obj[key].(type) {
case nil:
obj[key] = val
case T:
obj[key] = []T{value, val}
case []T:
obj[key] = append(value, val)
}
}
我用它来存储不同类型的数字。我正在考虑限制允许的类型,如下所示:
package hello
type number interface {
isNumber()
}
type Int32 int32
func (Int32) isNumber(){}
type Float32 float32
func (Float32) isNumber(){}
type object map[string]number
但我不确定如何像以前一样实现我的添加功能。我尝试了相同的功能,但我得到了这个:
cannot use val (variable of type T constrained by any) as type number in assignment:
T does not implement number (missing isNumber method)
所以我将签名更改为:
func add[T number](obj object, key string, val T)
但我得到另一个错误:
cannot use []T{…} (value of type []T) as type number in assignment:
[]T does not implement number (missing isNumber method)
有没有可能像我想做的那样做?
慕标琳琳
繁星淼淼
12345678_0001
随时随地看视频慕课网APP
相关分类