我正在尝试理解类型联合约束在Go泛型中的用法(v1.18)。下面是我尝试过的代码:
type A struct {
}
type B struct {
}
type AB interface {
    *A | *B
}
func (a *A) some() bool {
    return true
}
func (b *B) some() bool {
    return false
}
func some[T AB](x T) bool {
    return x.some()   // <- error
}编译器抱怨:
x.some未定义(类型T没有某些字段或方法)
为什么会这样呢?如果我不能使用*A和*B类型的共享方法,那么定义类型联合*A | *B有什么意义呢?
(显然,我可以用共享方法定义一个接口,并直接使用它。但在我的特定用例中,我希望显式地限制某些类型。)
https://stackoverflow.com/questions/71376627
复制相似问题