Golang 结构继承没有按预期工作?

标签 go

查看 this sandbox

当声明一个继承自不同结构的结构时:

type Base struct {
    a string
    b string
}

type Something struct {
    Base
    c string
}

然后调用为继承值指定值的函数会出现编译错误:

f(Something{
    a: "letter a",
    c: "letter c",
})

错误信息是:unknown Something field 'a' in struct literal

这对我来说似乎很奇怪。这真的是预期的功能吗?

感谢您的帮助!

最佳答案

Golang 不提供典型的继承概念。你在这里完成的是嵌入。

它不向外部结构提供内部结构的字段,而是允许外部结构访问内部结构的字段。

为了创建外部结构Something,您需要为其提供包含内部结构Base的字段

在你的情况下:

Something{Base: Base{a: "letter a"}, c: "letter c"}

关于Golang 结构继承没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644117/

相关文章:

date - 将日期从 DD-MON-YY 转换为 YYYYMMDD

c# - 如何在 C# 中解密用 GO 语言加密的 RSA 加密字符串。解码 OAEP 填充时出错

go - 并行运行基准测试,即模拟同时请求

golang 将 args(一段字符串)作为 "args ... interface{}"传递

go - 关于Golang指针,这是为什么呢?

go - 为什么长度为 512 的缓冲区字节数组,又名 [512]byte 在 Go 中更适合读写?

go - 有没有一种通用的方法可以将元数据添加到 Go 项目中?

database - GORM 中的复杂更新

postgresql - 在 Golang 中使用 postgres 获取事务提交前的最后一个 ID

go - 如何在 Go 中解码 YAML