登录
首页 >  Golang >  Go问答

Golang 将 `time.Time` 嵌入其他字段以打印

来源:stackoverflow

时间:2024-02-26 08:54:23 232浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Golang 将 `time.Time` 嵌入其他字段以打印》,涉及到,有需要的可以收藏一下

问题内容

我是 go 的新手。这是一个一直困扰我的问题。

简而言之,当我打印带有 time.time 类型的匿名字段的 struct 时,输出类似于单独打印的 time.time 变量。大括号和其他字段均未显示。

package main

import (
    "fmt"
    "time"
)

type Embedding struct {
    i       int
            time.Time
}
type NoEmbedding struct {
    i       int
    Present time.Time
}

func main() {

    // `embedding` and `noEmbedding` shared exactly the same content
    embedding := Embedding{
        1,
        time.Now(),
    }
    noEmbedding := NoEmbedding{
        1,
        time.Now(),
    }

    fmt.Println("embedding:\n", embedding)
    fmt.Println("no embedding:\n", noEmbedding)
}

/* output
embedding:
 2020-09-18 01:42:37.9201284 +0800 CST m=+0.011626601
no embedding:
 {1 2020-09-18 01:42:37.9201284 +0800 CST m=+0.011626601}
*/

问题本质上是“为什么 go 中的时间在结构体中打印方式不同?”的更进一步。我已经阅读了“embedding in go”,但尚未找到任何线索。


解决方案


fmt.Println 将使用 String 方法(如果存在)。当您在结构中嵌入时间值时,TimeString 方法将提升为结构的 String 方法。这就是它打印不同的原因。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang 将 `time.Time` 嵌入其他字段以打印》文章吧,也可关注golang学习网公众号了解相关技术文章。

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