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

int * time.Second何时工作,什么时候在golang中不工作?

戎高爽
2023-03-14
问题内容

为什么效果time.Sleep(5 * time.Second)很好,但是:

x := 180
time.Sleep(15 / x * 60 * time.Second)

才不是?我收到类型不匹配错误(类型int64time.Duration)。鉴于错误,我更了解后者为何失败而不是前者为何成功。


问题答案:

在Go中,数字文字(例如60)是未 类型化的常量
。这意味着它将被默默地强制为适用于使用该操作的任何类型。所以当你说:

var x := 5 * time.Second

然后从类型推断出类型为time.Seconda time.Duration,因此文字5也被视为a
time.Duration。如果没有什么可以从中推断类型,它将假设一个类型(“布尔,符文,整数,float64,complex128或字符串”)并使用该类型。所以:

x := 180

收益率x类型为int

但是,当您执行某项操作涉及某种类型的东西时,例如说一个变量xan int,则您有两种类型,必须转换一种类型才能使该操作合法。

因此,对于最初的问题“什么时候可以int * time.Second工作,什么时候不能在golang中工作?”,int * time.Second实际上在Go中 永远无法 工作。但5 * time.Secondint * time.Second

在Go游览中涉及到这一点:

未类型的常量采用其上下文所需的类型。



 类似资料:
  • 考虑以下两行代码: 对我来说,他们看起来很相似。但是,第二行被Java编译器(1.8)拒绝,消息是“不能推断SimpleFileVisitor的类型参数<>”。 谁能解释一下,有什么问题吗?

  • 问题内容: 我在jsf应用程序中使用来遍历人员列表。我不使用,因为每个人都有自己的标签(primefaces)。JSF英雄“BalusC”已经在这一环节上帮助了我。现在,我尝试保存(回发)数据。这不适用于,永远不会调用Person对象的适当设置器。有了它的作品。显然,我还没有掌握两个标签之间的区别,因此我将给您一些启发。 谢谢 马塞尔 问题答案: 不在服务器上构建JSF树节点。您可以直接在html

  • 只是需要一些帮助知道去哪里找...谢了。 全stacktrace

  • 问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。