首页 >后端开发 >Golang >Go 泛型可以强制结构中存在特定字段吗?

Go 泛型可以强制结构中存在特定字段吗?

Barbara Streisand
Barbara Streisand原创
2024-12-10 00:47:13418浏览

Can Go Generics Enforce the Presence of Specific Fields in Structs?

在 Go 中使用泛型强制字段存在

在 Go 中开发泛型函数时,确保传递的值符合特定的字段标准至关重要。在这种情况下,出现了一个常见的问题:我们可以利用泛型来验证传递值中某些字段(例如 ID int)的存在吗?

尽管已经尝试了各种方法,但 Go 中当前的 Go 泛型实现1.18 引入了一个限制:不支持结构类型。因此,定义一个只接受特定字段值而不依赖接口方法的泛型函数目前是不可行的。

但是,理解近似语法 ~T 的重要性至关重要。在提供的示例中,~struct{ ID int } 暗示其基础类型恰好是 struct{ ID int } 的类型。这不包括拥有 ID int 字段和其他字段的结构。

虽然存在接口约束中字段术语的提案,但它不包含在 Go 1.18 中。因此,当前的泛型实现缺乏定义部分结构类型的语法。

因此,为了确保值拥有特定字段,唯一可行的选择仍然是在接口中定义相应的方法。

以上是Go 泛型可以强制结构中存在特定字段吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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