登录
首页 >  Golang >  Go问答

嵌入的通用字段如何避免导出?

来源:stackoverflow

时间:2024-02-14 16:39:24 146浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《嵌入的通用字段如何避免导出?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

如果我不使用泛型,我可以使用下面的代码,

type othertype = external.othertype
type mytype struct {
    othertype 
}

但是如果我使用泛型,它就无法工作,因为泛型类型不能是别名。

type otherType[T any] = external.OtherType[T] //error, generic type cannot be alias
type MyType[T any] struct {
    otherType[T]
}

我想“覆盖”泛型类型的方法,但我不希望导出嵌入字段的所有方法。


正确答案


将在不久的将来提供:spec: generics: permit type parameters on aliases,提案已被接受。

从今天开始(go 1.20),您只能在泛型类型的实例化上定义类型别名:

type otherType = external.OtherType[string]

但是请注意,即使类型本身未导出,嵌入类型的方法也会得到提升。通过嵌入未导出类型所实现的目的只是为了防止客户端包访问嵌入的字段

有关一些解决方法,请参阅 Export only subset of methods implemented by embedded struct

以上就是《嵌入的通用字段如何避免导出?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>