我的编程空间,编程开发者的网络收藏夹
学习永远不晚

GoLang - 如何将值初始化为 *time.Time

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

GoLang - 如何将值初始化为 *time.Time

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《GoLang - 如何将值初始化为 *time.Time》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我在某些 device.go 文件中定义了一个结构

type payload struct {
    ...
    timestamp *time.time  `json:"timestamp,omitempty"`
    ...
}

现在我想在其他文件中初始化这个结构,我正在尝试这样做:

payload:= &device.Payload{
    ....
    Timestamp: time.Now(), // throws error
    ... //other initializations work fine
}

不能使用 time.now() (time.time 类型的值)作为 *time.time 值 结构体字面量

我想将变量初始化为当前 utc 时间。我是 golang 新手。我该怎么做?


正确答案


time.Now() 返回类型为 time.Time 的值,该值不是 *time.time

请注意,您也不能获取函数调用的返回值的地址,也不能执行 &time.now() 。详情请见How to get the pointer of return value from function call?

您可以做的是使用 time.time 类型的变量并获取其地址:

var t = time.now()

payload:= &device.payload{
    timestamp: &t,
}

另一个“流行”选项是创建一个辅助函数来返回 time.time 值的地址(您可以直接将函数调用的返回值传递给该函数):

func timeptr(t time.time) *time.time {
    return &t
}

payload:= &device.payload{
    timestamp: timeptr(time.now()),
}

有关详细信息和其他选项,请参阅 How do I do a literal *int64 in Go?

我假设您需要一个指针,因为您希望允许“缺失时间”选项,这对于 encoding/json 包尊重“缺失时间”是必要的(详细信息:JSON omitempty With time.Time Field)。请注意,在其他情况下,可能不需要自动转向指针:您可以使用 time.time (这是一个结构)的零值来指示“缺失时间”状态。要轻松判断 time.time 是否为零值,您可以使用 Time.IsZero()。请参阅相关内容:Idiomatic way to represent optional time.Time in a struct

time.now() 返回一个 time 值,但您的结构正在寻找指针。将您的结构更改为

type Payload struct {
    ...
    Timestamp time.Time  `json:"timestamp,omitempty"`
    ...
}

来自文档(https://pkg.go.dev/time#Time):

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

GoLang - 如何将值初始化为 *time.Time

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

GoLang - 如何将值初始化为 *time.Time

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《GoLang - 如何将值初始化为 *time.Time》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更
GoLang - 如何将值初始化为 *time.Time
2024-04-05

python如何初始化列表的值

这篇文章主要介绍了python如何初始化列表的值,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。初始化列表的值items = [0]*3print items>>> [0,0,
2023-06-04

如何使用值初始化映射

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何使用值初始化映射》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~问题内容我在 go 中创建了多行地图并设置了值。type animal str
如何使用值初始化映射
2024-04-05

如何在golang中将“2023年4月”解析为time.Time对象

问题内容我无法将像 April 2023 这样的日期字符串解析为 time.Time 对象来比较 golang 中的日期时间对象。正确答案package mainimport ("fmt""time")func main() {t,
如何在golang中将“2023年4月”解析为time.Time对象
2024-02-06

如何在Golang中创建和初始化数组

如何在Golang中创建和初始化数组在Golang中,数组是一个固定长度的数据结构,用于存储相同类型的元素。数组的长度在创建时就确定了,无法动态改变。本文将介绍如何在Golang中创建和初始化数组,以及一些常用的数组操作方法。创建数组
如何在Golang中创建和初始化数组
2024-03-02

如何将阿里云服务器初始化出来

本文将详细介绍如何将阿里云服务器初始化出来,包括服务器的配置、软件安装和调试等步骤。阿里云服务器是一种云基础架构服务,可以提供弹性的计算、存储和网络资源,以满足企业对灵活计算和大规模存储的需求。在使用阿里云服务器之前,我们需要对其进行初始化,以便于后续的使用和管理。一、服务器配置登录阿里云控制台:首先,我们需要登
如何将阿里云服务器初始化出来
2023-12-14

如何理解C++ 结构体初始化与赋值

本篇文章给大家分享的是有关如何理解C++ 结构体初始化与赋值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.结构体初始化结构体是常用的自定义构造类型,是一种很常见的数据打包方
2023-06-25

Java如何将字符串转化为hash值

在Java中,可以使用hashCode()方法将字符串转化为哈希值。hashCode()方法是String类的一个成员方法,可以直接调用。示例代码如下:```javaString str = "Hello World";int hash =
2023-09-11

Linux中如何将分区初始化为物理卷,把物理卷加入卷组

这篇文章主要介绍了Linux中如何将分区初始化为物理卷,把物理卷加入卷组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。用到的命令有1、pvcreate  (physical
2023-06-09

如何在golang中用另一个数组初始化别名数组?

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何在golang中用另一个数组初始化别名数组?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮
如何在golang中用另一个数组初始化别名数组?
2024-04-04

PHP如何将一个一维数组的值转化为字符串

本文详细介绍了PHP中将一维数组的值转换为字符串的多种方法,包括:implode()函数、join()函数、循环连接操作符、sprintf()函数以及其他方法,如序列化和JSON编码。不同方法适用于不同的需求和格式化要求,您可根据具体情况选择最适合的方法。
PHP如何将一个一维数组的值转化为字符串
2024-04-02

Java如何将一个一维数组的值转化为字符串

Java将一维数组转化为字符串的方法包括使用Arrays.toString()方法、StringBuilder类和StringJoiner类。Arrays.toString()简单高效,适用于小型数组;StringBuilder灵活性高但效率较低;StringJoiner专门用于连接字符串,效率高。选择方法应考虑数组大小、格式和性能。确保使用String.valueOf()转换基本类型,并可自定义连接字符串、前缀和后缀。
Java如何将一个一维数组的值转化为字符串
2024-04-02

python如何使用dataframe将csv中的0值数据转化为nan缺失值字样

这篇文章主要介绍python如何使用dataframe将csv中的0值数据转化为nan缺失值字样,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用到这个语句。c[c==0]=np.nan我们具体来看一下c和np是什么n
2023-06-20

PHP如何用回调函数迭代地将数组简化为单一的值

本篇文章详细介绍了PHP中如何使用回调函数和array_reduce()函数迭代地将数组简化为单一的值。该方法通过将回调函数应用于每个数组元素并将其结果与初始值合并来实现。回调函数可以执行各种操作,如求和、过滤和转换。通过代码示例,文章展示了如何使用array_reduce()函数求和数组、过滤奇数和将数组转换为字符串。
PHP如何用回调函数迭代地将数组简化为单一的值
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录