登录
首页 >  Golang >  Go问答

嵌入式结构的一部分

来源:stackoverflow

时间:2024-02-09 23:27:27 397浏览 收藏

大家好,我们又见面了啊~本文《嵌入式结构的一部分》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我可以将类型 a 嵌入到 b 中。

type a struct {
  r int64
  s int64
}

type b struct {
  a
}

但是如何只嵌入一个字段?

type B struct {
  A.R // does not work
}

正确答案


假设您的两种结构数据类型为 ab

如果您希望 ab 都有一个名为 f 且类型为 t 的字段,您可以这样做

type (
    a struct {
        f t
    }

    b struct {
        f t
    }
)

如果您希望仅在源代码的一个位置更改类型 t,您可以像这样抽象它

type (
    t = sometype

    a struct {
        f t
    }

    b struct {
        f t
    }
)

如果您只想在源代码的一个位置更改 f 的名称,您可以像这样抽象它

type (
    myfield struct {
        f t
    }

    a struct {
        myfield
    }

    b struct {
        myfield
    }
)

如果要抽象多个可解脱字段,则必须像这样单独抽象它们

type (
    myfield1 struct {
        f1 t1
    }
    myfield2 struct {
        f2 t2
    }
    
    a struct {
        myfield1
        myfield2
    }
    
    b struct {
        myfield1
    }
)

您无法嵌入单个字段。您只能嵌入整个类型。

如果您想嵌入单个字段,则需要创建一个仅包含该字段的新类型,然后嵌入该类型:

type R struct {
  R int64
}

type B struct {
  R
}

今天关于《嵌入式结构的一部分》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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