首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Go泛型中,如何对联合约束中的类型使用通用方法?

在Go泛型中,如何对联合约束中的类型使用通用方法?
EN

Stack Overflow用户
提问于 2022-03-07 05:05:35
回答 2查看 5K关注 0票数 8

我正在尝试理解类型联合约束在Go泛型中的用法(v1.18)。下面是我尝试过的代码:

代码语言:javascript
运行
复制
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有什么意义呢?

(显然,我可以用共享方法定义一个接口,并直接使用它。但在我的特定用例中,我希望显式地限制某些类型。)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71376627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档