登录
首页 >  Golang >  Go问答

出现意外输出时打印 time.Time

来源:stackoverflow

时间:2024-03-14 17:18:23 472浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《出现意外输出时打印 time.Time》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

“我正在尝试输出通道的值,该通道从结构接收值,该结构应该是字符串和时间。它输出这两个值,但随后它包含这条奇怪的行” +0300 +03 m= +0.001997101“时间之后。”

尝试了 fmt 包中的许多其他内容,但仍然没有帮助。也尝试了时间包中的东西

package main

import (
    "fmt"
    "os"
    "os/signal"
    "sync"
    "syscall"
    "time"
)

var wg sync.WaitGroup

type widget struct {
    Label string
    Time  time.Time
}

func main() {
    c := make(chan widget)
    sc := make(chan os.Signal, 1)
    done := make(chan bool, 1)

    signal.Notify(sc, syscall.SIGINT,
            syscall.SIGTERM,
        syscall.SIGHUP,
        syscall.SIGKILL,
        syscall.SIGSEGV,
    )

    go func() {
            sig := <-sc
        fmt.Println()
        fmt.Println(sig)
        done <- true
    }()

    go send(c)
    go receive(c)
    <-done
    fmt.Println("Program exited")

}

func send(p chan<- widget) {
    producer := widget{
            "widget_id_34",
        time.Now(),
    }
    p <- producer
}
//where im grtting the problem from i beilieve
func receive(c <-chan widget) {
    out := <-c
    fmt.Printf("%v", out)
    //fmt.Fprintln(os.Stdout, <-c)
}

解决方案


m 字段是 monotonic time。根据文档:

这样做会产生没有 m 值的时间。 +0300 是时区偏移量,它是时间值的一部分(没有它,时间值将毫无用处,因为它会有 +/- 23 小时的误差范围)。

理论要掌握,实操不能落!以上关于《出现意外输出时打印 time.Time》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>