脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - 解决Go语言time包数字与时间相乘的问题

解决Go语言time包数字与时间相乘的问题

2022-09-13 10:45西京刀客 Golang

这篇文章主要介绍了Go语言time包数字与时间相乘的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

背景说明:

10 * time.Second //正常数字相乘没错

但是

?
1
2
3
4
5
6
package main
import "time"
func main(){
    connectTimeout := 10
    time.Sleep(time.Second*connectTimeout)
}

这样使用会报错

int and time.Duration are different types. You need to convert the int to a time.Duration 

原因分析:

原因:因为类型不匹配,time.Duration类型 不能直接和 int类型相乘,需要先将变量转换为time.Duration

解决方式:time.Duration(int变量))

解决方法:

要将整数个单位转换为持续时间

?
1
2
3
4
seconds := 10
    ctx, cancel := context.WithTimeout(context.Background(), time.Duration(seconds) * time.Second)
    //ctx, cancel := context.WithCancel(context.Background())
    defer cancel()
?
1
2
3
4
5
6
7
8
9
10
// Common durations. There is no definition for units of Day or larger
// to avoid confusion across daylight savings time zone transitions.
//
// To count the number of units in a Duration, divide:
//  second := time.Second
//  fmt.Print(int64(second/time.Millisecond)) // prints 1000
//
// To convert an integer number of units to a Duration, multiply:
//  seconds := 10
//  fmt.Print(time.Duration(seconds)*time.Second) // prints 10s

参考

Golang:如何将int转换为time.duration?
参考URL: https://ask.csdn.net/questions/1037457
golang time.Duration 自定义变量报错解决
参考文末介绍。

下面看下:golang time.Duration 自定义变量报错解决

对于time.Duration类型,如果采用 time.Duration类型 * int变量 会报错,而直接和数字相乘则不会出现;

具体是为什么呢?怎么解决呢?

错误:Invalid operation: time.Millisecond * idcTimeOut (mismatched types Duration and int64)

原因:因为类型不匹配,time.Duration类型 不能直接和 int类型相乘,需要先将变量转换为time.Duration

解决方式:time.Duration(int变量))

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
 idc := getIdc()
    var idcTimeOut int64
    if _, ok := IdcTimeout[idc]; ok {
        idcTimeOut = IdcTimeout[idc]
    } else {
        idcTimeOut = AllTimeout
    }
    //错误写法
    time.After(time.Millisecond * idcTimeOut
    //正确写法
    time.After(time.Millisecond * time.Duration(idcTimeOut))

到此这篇关于解决Go语言time包数字与时间相乘的问题的文章就介绍到这了,更多相关Go语言数字与时间相乘内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/inthat/article/details/123895596

延伸 · 阅读

精彩推荐
  • GolangGo语言学习技巧之命名规范

    Go语言学习技巧之命名规范

    最近在学习go语言,发现了不少需要整理的知识点,所以整理下分享出来,下面这篇文章主要给大家介绍了关于Go语言学习技巧之命名规范的相关资料,文中...

    Zachary Marv4732020-05-12
  • Golang一些关于Go程序错误处理的相关建议

    一些关于Go程序错误处理的相关建议

    错误处理在每个语言中都是一项重要内容,众所周知,通常写程序时遇到的分为异常与错误两种,Golang中也不例外,这篇文章主要给大家介绍了一些关于Go程序错...

    网管10162021-11-16
  • GolangGolang中的Interface详解

    Golang中的Interface详解

    本文详细讲解了Golang中的Interface,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    qqwx8592022-07-13
  • Golanggolang image图片处理示例

    golang image图片处理示例

    这篇文章主要介绍了golang image图片处理的方法,结合实例形式分析了Go语言针对图片的打开、读取、转换等相关操作技巧,需要的朋友可以参考下 ...

    dotcoo23392020-04-30
  • Golang一文详解Golang中net/http包的实现原理

    一文详解Golang中net/http包的实现原理

    这篇文章主要介绍了如何用 net/http 自己编写实现一个 HTTP Server 并探究其实现原理,具体讲解Go语言是如何接收和处理请求的,希望能够对大家的学习或工作...

    1个俗人10892022-08-03
  • Golang解决golang 反射interface{}做零值判断的一个重大坑

    解决golang 反射interface{}做零值判断的一个重大坑

    这篇文章主要介绍了解决golang 反射interface{}做零值判断的一个重大坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    fwhezfwhez8172021-05-27
  • Golang简单讲解Go程序中使用MySQL的方法

    简单讲解Go程序中使用MySQL的方法

    这篇文章主要介绍了Go程序中使用MySQL的方法,需要使用第三方包来进行连接,需要的朋友可以参考下 ...

    铁哥2292020-04-27
  • Golang曹大带我学 Go之面向火焰图编程

    曹大带我学 Go之面向火焰图编程

    现实中听过各种面向 XX 编程,什么面向过程编程、面向对象编程;也有一些俏皮的,面向薪资编程、面向老板编程;之前曹大还写过一篇,面向事故编程。今...

    码农桃花源4232022-01-05