当前位置: 首页 > 面试题库 >

这是golang的演员吗?

东方乐
2023-03-14
问题内容

paxPayment, ok = dataObject.(*entities.PassengerPayment)

括号用于什么用途?我不确定此分配操作中发生了什么。

您是否需要更多详细信息来回答这个问题?


问题答案:

这是一个类型断言。类型断言可用于:

  • 接口 类型的值中获取 具体 类型的值 __
  • 或获得与初始接口类型 不同的 接口值(具有不同方法集的接口,实际上不是原始接口的子集,因为可以使用简单的类型转换就可以简单地获得它)。

引用规范:

对于x接口类型和类型T的表达式,主要表达式

x.(T)

断言x不是,nil并且存储的值x是type T。该符号x.(T)称为 类型断言

更精确地,如果T不是一个接口类型,x.(T)断言,动态型的x是相同的类型T。在这种情况下,T必须实现的(接口)类型x;否则类型断言无效,因为无法x存储type的值T。如果T为接口类型,x.(T)则断言动态类型的x实现接口T

更具体地说,您的示例是它的一种特殊形式,它还报告类型断言是否成立。如果不是,ok将是false,如果断言成立,ok将是true

与以下形式不同,这种特殊形式永远不会惊慌:

paxPayment = dataObject.(*entities.PassengerPayment)

如果dataObject不持有type值,*entities.PassengerPayment则会感到恐慌。



 类似资料:
  • 我从这里得到上面的错误消息: 特别是从第二行。。进口是 akka版本是2.2.1,scala是2.10.2,我正在使用sbt 0.13来构建它。 编辑:我用 结果如下:

  • 我所做的: null 更新:我发现了问题;它是由于通过池消耗Redis连接而导致的,并且从未释放它们。但我还有第二个问题,我在这里做的事情明智吗?

  • 我们在使用Akka HTTP构建的web服务器上遇到了奇怪的内存行为。我们的架构是这样的: Web服务器路由调用各种参与者,为将来获取结果并将其流式传输到响应 参与者调用非阻塞操作(使用期货),组合和处理从中提取的数据,并将结果传送给发送者。我们使用标准的Akka Actor,实现它的receive方法(不是Akka键入的) 应用程序中的任何地方都没有阻止代码 当我在本地运行web服务器时,一开始

  • 我经常发现自己使用一个“主”角色,为子任务创建许多子角色。当子任务完成时,主角也应该停止自己。所以当时,我观察子角色并停止主角色context.children.is。 我经常使用这种模式,但因为我从未读过这方面的文章。我不确定,这是一个好主意还是失败的演员有问题。。。? 我已经读过Akka 2中的关机模式,但是这种方法在Java中似乎比我的解决方案更复杂? 以下是我针对具有两个子任务的主要参与者

  • 我希望有几个参与者(它们表示基于Akka IO部分的TCP连接)。这些参与者应更新通用模型(内存中)。此模型保存在管理此模型的其他参与者中。 我的问题是,我如何设置这个结构?有没有办法告诉akka某个演员只有一个实例? 另一种选择是:我已经有了一个actor,它接受新的TCP/IP连接并将它们传递给新的actor。现在我可以在连接接收器中创建这个“模型管理器角色”,并将这个角色传递给新创建的每个连