gpt4 book ai didi

Go:如何以可读的方式格式化这个结构?

转载 作者:IT王子 更新时间:2023-10-29 02:30:14 30 4
gpt4 key购买 nike

我有一个包装 time.Time 对象的结构,并希望以人类可读的方式对其进行格式化。

package main

import (
"time"
"fmt"
)

type TimeStruct struct {
t time.Time
}

func main() {
t := time.Now()
fmt.Printf("time: %v\n", t) // nice

ts := TimeStruct{t: t}
fmt.Printf("time struct: %#v\n", ts) // ugly
}

( Play )

为什么 Go 不将 TimeStruct 中的 t 字段格式化为与普通 time.Time 对象相同的格式?有没有一种简单的方法可以以可读的方式对其进行格式化(无需为其定义额外的方法)?

最佳答案

在使用 %v 时获得所需的人类可读时间的唯一方法是实现 Stringer 接口(interface)。

package main

import (
"time"
"fmt"
)

type TimeStruct struct {
t time.Time
}
func (self TimeStruct) String() string {
return fmt.Sprintf("TimeStruct{time.Time: %v}", self.t)
}

func main() {
t := time.Now()
ts := TimeStruct{t: t}
// time struct: TimeStruct{time.Time: 2009-11-10 23:00:00 +0000 UTC}
fmt.Printf("time struct: %v\n", ts)
}

关于Go:如何以可读的方式格式化这个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396106/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com