PHP小编鱼仔在这篇文章中将介绍如何使用指向类型参数的指针来创建泛型类型的实例。泛型是一种在编程中广泛应用的概念,它允许我们在不指定具体类型的情况下编写通用的代码。在php中,虽然没有
PHP小编鱼仔在这篇文章中将介绍如何使用指向类型参数的指针来创建泛型类型的实例。泛型是一种在编程中广泛应用的概念,它允许我们在不指定具体类型的情况下编写通用的代码。在php中,虽然没有原生支持泛型的功能,但我们可以通过使用指向类型参数的指针来模拟实现泛型。这种方法可以让我们在编写代码时更加灵活和高效,提高代码的复用性和可维护性。在接下来的内容中,我们将详细介绍如何使用这种方法来创建泛型类型的实例,并给出一些实际应用的示例。
给定这些类型定义:
type n interface{ ~int | ~float32 | ~float64 }
type s[t any] struct {
t t
}
type myint int
type pspmyint[t myint] *s[*t]
type spmyint[t *myint,] s[t]
type spmyint2[t myint] s[*t]
我可以创建 type pspmyint
的 var
func createps[t myint]() pspmyint[t] {
var i t
s := s[*t]{t: &i}
return &s
}
但我不知道如何创建 spmyint
或 spmyint2
的变量。
这个
func createSP[T myInt]() spMyInt2[T] {
var i T
s := S[*T]{t: &i}
return s
}
编译失败
不能在return语句中使用s(s[*t]类型的变量)作为spmyint2[t]类型。
首先,不要使用精确类型参数约束。这几乎没有任何意义。当您将函数声明为 createps[t myint]()
时,类型参数类型集的基数为 1,因此可以有效地由 myint
实例化仅和永远。您可以像下面这样重写该函数:
解决这个问题:
类型 s[*t]
与 spmyint2[t]
不同。但是,由于 spmyint2[t]
的底层类型是 s[*t]
,因此您可以简单地转换:
至于 type spmyint[t *myint,] s[t]
(其中逗号不是拼写错误,但需要避免解析歧义),事情并不那么简单。
问题在于类型参数不是其类型约束。因此,类型文字不能用于实例化不同的未命名类型文字。需要明确的是:
// naive attempt that doesn't compile
func createsp1[t myint]() spmyint[*t] {
var i t
s := s[*t]{t: &i}
return spmyint[*t](s)
}
您可能认为 spmyint[t *myint]
有一个类型参数约束为 *myint
并且函数 t
受基本类型 myint
约束,因此 *t
应该满足 phpcnc phpcnt * myint。这是不正确的,因为类型文字 *t
不等于 *myint
的明显不明显的原因。所以实际上你不能为 type spmyint[t *myint,] s[t]
编写通用构造函数。
但是你很幸运,因为类型约束的基数为一。所以你可以删除类型参数:
func createSP1() spMyInt[*myInt] {
var i myInt
s := S[*myInt]{t: &i}
return spMyInt[*myInt](s)
}
以上就是使用指向类型参数的指针创建泛型类型的实例的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 使用指向类型参数的指针创建泛型类型的实例
本文链接: https://www.lsjlt.com/news/562595.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0