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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-07 11:00:17395浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn