我正在尝试将assert从a键入[]Node
到[]Symbol
。在我的代码中,Symbol
实现Node
接口。
这是一些周围的代码:
43 func applyLambda(args []Node, env Env) Node {
44 if len(args) > 2 {
45 panic("invalid argument count")
46 }
47 fixed, rest := parseFormals(args.([]Symbol))
48 return Func{
49 Body: args[1],
50 FixedVarNames: fixed,
51 RestVarName: rest,
52 }
53 }
这是我得到的错误:
./builtins.go:47: invalid type assertion: args.([]Symbol) (non-interface type []Node on left)
我相信这是有充分的理由的。最好的进行方法是什么?
在说x.(T)
变量x
应该是接口类型的,因为仅对于类型的变量,接口的动态类型是不固定的。虽然Node
是接口,但[]Node
不是。切片是一种独特的非接口类型。因此,假设一片接口值也是一个接口也没有意义。
类型Node
在您的代码中有明确的定义,因此是一个接口。您已经为其指定了方法列表。类型[]Node
不是那样。它定义什么方法?
我知道您来自哪里。这可能是一个有用的快捷方式,但没有任何意义。有点像期望syms.Method()
当syms
type是[]Symbol
and
Method
for时工作Symbol
。
用此代码替换第47行,您可以执行以下操作:
symbols := make([]Symbol, len(args))
for i, arg := range args { symbols[i] = arg.(Symbol) }
fixed, rest := parseFormals(symbols)
问题内容: 我想知道我们可以在一个接口内定义一个接口。喜欢 这是面试中提出的问题。任何实时使用。 问题答案: 是的,我们可以做到。Java中的嵌套接口的定义如下: 嵌套接口是其声明出现在另一个类或接口的主体内的任何接口。顶级接口是不是嵌套接口的接口。 请参阅此为多。 进一步 … 一个原因可能是外部接口具有一种将回调实现作为参数的方法。在这种情况下,嵌套接口是回调方法必须实现的协定。我没有理由在顶层
问题内容: 我刚刚在这篇博客文章中遇到了这段代码 什么是“接口断言”? 问题答案: 它将指向具体类型的nil指针分配给接口类型的变量。这是证明具体类型满足接口的一种常见做法- 如果不满足,则该行将无法编译,并给出一个错误,即无法将具体类型分配给该接口类型的变量,以及为什么。 正如@JimB指出的那样,“接口断言”是由作者组成的术语。Go没有这样的术语。具体来说,这是类型转换,先转换为的指针,然后将
问题内容: 我正在将pytest用于我的selenium测试,并想知道在一个测试中是否可能有多个断言? 我调用了一个比较多个值的函数,并且我希望测试报告所有不匹配的值。我遇到的问题是,使用“ assert”或“ pytest.fail”会在发现不匹配的值时立即停止测试。 有没有办法让测试继续运行并报告所有不匹配的值? 问题答案: 正如Jon Clements所评论的那样,您可以填充错误消息列表,然
8.3.6 目录和文件的中断功能 中断21H提供了许多有关目录和文件操作的功能,其中常用的功能如下: 1、操作目录的常用功能 39H——创建目录 3BH——设置当前目录 3AH——删除目录 47H——读取当前目录 有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之目录控制功能。 2、用文件句柄操作文件的常用功能 3CH——创建文件 4EH——查找到第一个文件 3DH——打开文件 4
在Google Guice中:我们可以实现一个带有注释的单例类,它不实现接口,并且尝试使用注释将它注入到任何其他类中吗?此外,我还没有在的扩展类中为该类配置任何绑定。有必要从接口实现类吗?我还想了解绑定的情况,如果我从接口实现单例类,那么它需要绑定,因为可能有多个类实现接口。 但是如果我有一个类没有实现接口,那么是否需要在实现AbstractModule的类中绑定?
我正在使用< code>MapStruct,为此我必须定义一个具有相应映射函数的接口。通过使用用< code > @ before mapping < code > 和@AfterMapping注释的< code>default方法,可以实现一些逻辑。在这样一个带注释的默认方法中,我想使用我的SpringBoot应用程序的一个配置类。我该怎么做?我可以将这样的配置(bean)自动连接到接口吗?这样