首页 > 后端开发 > Golang > 如何在类型约束中有效使用 Go 泛型联合进行测试?

如何在类型约束中有效使用 Go 泛型联合进行测试?

Susan Sarandon
发布: 2024-12-19 21:42:11
原创
959 人浏览过

How Can I Effectively Use Go Generics Unions in Type Constraints for Testing?

Go 泛型 - 类型约束和联合解释

在 Go 泛型中,联合作为接口约束的一部分发挥着特定的作用。让我们来解释一下这意味着什么,以及它与您关于使用不同类型进行测试的问题有何关系。

什么是联合?

在泛型类型约束中,联合定义了一组类型参数必须匹配的类型。例如:

type intOrString interface {
    int | string
}
登录后复制

此约束确保任何泛型类型参数 T 必须是 int 或字符串。

为什么不能将联合用作类型?

带有联合的接口约束不是常规接口类型。这种区别是 Go 的泛型设计中有意为之的。

联合约束允许的操作

使用带有联合约束的类型参数的函数只能执行每个成员允许的操作联盟集。这包括:

  • 变量声明
  • 转换
  • 比较
  • 排序
  • 运算符

适用于您问题

您原来的方法使用 intOrString 作为类型,这是不允许的。要正确使用联合约束,请按如下方式修改代码:

type testDifferenceInput[T intOrString] [][]T
type testDifferenceOutput[T intOrString] []T
type testDifference[T intOrString] struct {
    input testDifferenceInput[T]
    output testDifferenceOutput[T]
}

func TestDifference(t *testing.T) {
    var ttInts []testDifference[int]
    var ttStrings []testDifference[string]

    // Populate ttInts and ttStrings with test cases

    for _, tt := range append(ttInts, ttStrings) {
        // Execute the test case
    }
}
登录后复制

通过根据类型参数分隔测试用例,您可以解决通用容器无法容纳不同项目的限制。类型。

以上是如何在类型约束中有效使用 Go 泛型联合进行测试?的详细内容。更多信息请关注PHP中文网其他相关文章!

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