首页 > 后端开发 > Golang > Go 泛型可以在没有接口方法的情况下强制传递值中的特定字段吗?

Go 泛型可以在没有接口方法的情况下强制传递值中的特定字段吗?

Mary-Kate Olsen
发布: 2024-12-07 11:00:17
原创
361 人浏览过

Can Go Generics Enforce Specific Fields in Passed Values Without Interface Methods?

在 Go 中使用泛型确保传递的值具有特定字段

问题:
开发人员经常需要泛型函数在 Go 中接受具有特定字段的值。尽管已经尝试了各种方法,但找到可行的解决方案一直具有挑战性。

问题:
是否可以在 Go 中实现通用函数来强制某些字段的存在(例如,在不使用接口方法(例如“GetID()”的情况下传递的值上的“ID int”字段) int")?

答案:
遗憾的是,答案是

在 Go 1.18 版本的泛型实现中,结构类型不支持。因此,接口中的方法对于访问传递值中的公共字段是必要的。

澄清波浪号类型语法 (~T) 表示一组其基础类型恰好是 T 的类型非常重要。所以“~struct{ ID int }”不包含具有“ID int”字段和其他字段的结构。

尽管存在解决此限制的提案,但它们不会在转到 1.18。

以上是Go 泛型可以在没有接口方法的情况下强制传递值中的特定字段吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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