首页 > 后端开发 > Golang > 嵌入式 Go 方法可以访问封闭的结构体字段吗?

嵌入式 Go 方法可以访问封闭的结构体字段吗?

Patricia Arquette
发布: 2024-12-16 21:34:20
原创
321 人浏览过

Can Embedded Go Methods Access Enclosing Struct Fields?

嵌入式方法可以访问“父”字段吗?

背景:

经过广泛的研究和测试,作者认为Go 中的嵌入方法无法访问“父”字段。这个问题探讨是否存在任何已知的异常或替代方法。

目标:

目标是为 Go 创建一个 Active Record 风格的 ORM,其中 CRUD 操作将嵌入到用户结构中。这将提高后端数据存储的可读性和抽象性。

示例:

提供的 Go 代码片段尝试访问“名称”字段Foo”结构来自嵌入的“Bar”结构的“Test”方法。但是,这会导致编译错误。

问题:

Go 中是否有任何机制允许嵌入式方法访问封闭结构的字段?

答案:

Go 不支持直接访问父字段在嵌入式方法中。 “Test”方法的接收者类型是“Bar”指针,该方法无法确定该指针是嵌入的还是独立的。

可能的解决方案:

一种解决方法包括向“Bar”结构添加一个 interface{} 成员,并要求将包含类型分配给该成员。然而,这不是一个优雅的解决方案,并且引入了额外的复杂性。

替代方法:

作者建议使用不同的 API 结构,而不是嵌入方法,例如“db.Save(user)”而不是“user.Save()”。这种方法可以更轻松地扩展到多个数据库并减少对全局状态的依赖。

以上是嵌入式 Go 方法可以访问封闭的结构体字段吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板