go 时间错误

invalid operation: n * time.Second (mismatched types int and time.Duration)

package main

import "time"

func main() {
   n := 1
   time.Sleep(n * time.Second)
}

time.Sleep支持参数是常量,变量需要强制类型转换成time.Duration。
time.Sleep(time.Duration(n) * time.Second)

time.Sleep参数单位是纳秒,1s相当于1 * 10^9纳秒。

package main

import "time"

const num = 1

func main() {
   time.Sleep(num * time.Second)
}

以上代码生成汇编代码
go tool compile -S main.go
go完成了常量的time.Duration的转换。

输出时间格式错误

package main

import (
	"fmt"
	"time"
)

func main() {
	// 秒后面带小数
	fmt.Println(time.Now())
	// 数据库存储时间
	// 不带小数,先转成秒数时间戳再转成Time
	fmt.Println(time.Unix(time.Now().Unix(), 0))
}

执行结果

2022-09-11 20:19:10.0588864 +0800 CST m=+0.004011701
2022-09-11 20:19:10 +0800 CST

invalid operation: cannot take address of time.Now() (value of struct type time.Time)

package main

import (
	"fmt"
	"time"
)

func main() {
	t := &time.Now()
	fmt.Println(t)
}

通过泛型来完成转换。

package main

import (
	"fmt"
	"time"
)

func ptr[T any](t T) *T {
    return &t
}

func main() {
	t := ptr(time.Now())
	fmt.Println(t)
}

 

posted on 2023-07-15 10:28  王景迁  阅读(67)  评论(0)    收藏  举报

导航