理解 Go 中的“没有方法的接口”
在您的代码中,您遇到了错误“type interface {} is interface with no方法”当尝试从传递给函数的匿名结构访问字段时。要理解此错误,必须掌握 Go 中接口的概念。
Go 中的接口是一种类型,它定义了具体类型必须实现的一组方法。但是,在您的情况下,您使用的接口是由接口 {} 表示的“空接口”。空接口没有任何方法,可以保存任何类型的值,使其成为通用类型。
访问匿名结构字段
访问以下字段传递给 NewJob 的匿名结构,您需要将其断言为兼容类型,然后才能访问其字段。类型断言允许您将空接口转换为特定的具体类型。
更正的代码
<code class="go">id := v.(struct{Id int}).Id</code>
在此更正的代码中,我们键入断言 v 接口具有 Id 字段的结构。这允许我们访问 Id 字段,并且程序将按预期运行。
请记住,应谨慎使用类型断言,因为如果类型断言失败,可能会导致运行时错误。
以上是为什么在 Go 中访问匿名结构时会得到“没有方法的接口”?的详细内容。更多信息请关注PHP中文网其他相关文章!