理解 Go 中的“没有方法的接口”
在您的代码中,您遇到了错误“type interface {} is interface with no方法”当尝试从传递给函数的匿名结构访问字段时。要理解这个错误,必须掌握 Go 中接口的概念。
Go 中的接口是一种类型,它定义了具体类型必须实现的一组方法。但是,在您的情况下,您使用的接口是由接口 {} 表示的“空接口”。空接口没有任何方法,可以保存任何类型的值,使其成为通用类型。
访问匿名结构体字段
访问传递给 NewJob 的匿名结构,您需要将其断言为兼容类型,然后才能访问其字段。类型断言允许您将空接口转换为特定的具体类型。
更正的代码
id := v.(struct{Id int}).Id
在这段更正后的代码中,我们键入断言带有 Id 字段的结构的 v 接口。这允许我们访问 Id 字段,并且程序将按预期运行。
请记住,应谨慎使用类型断言,因为如果类型断言失败,可能会导致运行时错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3