我想知道是否有可能初始化匿名 struct 包含泛型字段的array.下面的代码无法编译,而且我找不到任何与以下内容相关的示例:

    testCases := type [K comparable, T Numeric] []struct   {
        name     string
        args     map[K]T
        expected int
    }{
        // items ...
        {"integer", map[string]int{ "a":1 },
    }

没有匿名 struct ,这很容易,但目标不是:

    type args[K comparable, T Numeric] struct {
        m map[K]T
    }
    testCases := []struct {
        name     string
        args     args[string, int]
        expected int
    }{}

谢谢

推荐答案

Type parameters是引入的,所以当你输入类型时,你可以给类型参数指定具体的类型.鉴于此,你想做什么毫无意义.您希望创建一个通用匿名类型并立即实例化它.您不能在其他地方使用这个匿名 struct (因为它是匿名的),所以请不要使用类型参数,如果它是命名类型,请使用实例化类型参数时使用的具体类型.

回答你最初的问题:不,你不能这么做.语法不允许这样做.有一个提议支持这一点,但被拒绝:proposal: spec: generics: Anonymous generic aggregate types #45591.解决方法是使用命名 struct 类型,而不是匿名 struct 类型,就像您建议的那样.

Go相关问答推荐

Go 1.22 http mux:在同一路径上提供一个手柄和一个FS

Go汇编器命名为Constants

租户GUID X的租户不存在self 邮箱帐户的租户(我是唯一的成员)

Go SQLCMD比Windows本机版本慢吗?

如何在S汇编器中更高效地将全局数据加载到霓虹灯寄存器?

如何配置vscode以在Go中显示不必要的(过度指定的)泛型?

从MySQL/GO表获取行数据

通过代理从golang连接到ftp

如果第一次匹配条件,如何跳过切片中的值

如何将 DirName 和 serial 添加到 X509v3 Authority Key Identifier

此 Golang 程序中的同步问题

Golang 创建一个带有处理程序的模拟数据库并使用接口调用数据库

golang 中的可变参数函数

emersion/go-imap - imap.FetchRFC822:无效内存地址或零指针取消引用

go-libp2p - 从流中接收字节

Golang模板无法访问embedFS中的文件

此代码如何生成内存对齐切片?

每 N 秒运行一次函数,上下文超时

如何解决在mac m1中运行gcc失败退出状态1?

有没有办法在golang中映射一组对象?