打印时间。时间

时间:2019-08-27 15:01:00

标签: go time

““我正在尝试输出channel的值,该值从结构中接收到值,该值应该是字符串和时间。它输出这两个值,但是它包括这条奇怪的行” +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)
}

1 个答案:

答案 0 :(得分:0)

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

  

剥离单调时钟读数的典型方法是使用t = t.Round(0)

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