Go语言中如何为*time.Time类型的结构体字段正确初始化
错误原因
Payload结构体中Timestamp字段声明为*time.Time指针类型,而time.Now()的返回值为time.Time值类型,二者类型不匹配导致编译报错。
实现方案
你需要先获取当前UTC时间,再将其地址赋值给Timestamp字段即可。注意Go语言不支持直接对函数返回的临时值取地址,所以不能直接写&time.Now().UTC(),可以选择以下两种写法:
写法1:拆分赋值(可读性更高,推荐新手使用)
// 先将当前UTC时间存入变量 nowUTC := time.Now().UTC() payload:= &device.Payload{ // 其余字段初始化 Timestamp: &nowUTC, // 其余字段初始化 }
写法2:匿名函数一次性赋值
payload:= &device.Payload{ // 其余字段初始化 Timestamp: func() *time.Time { t := time.Now().UTC(); return &t }(), // 其余字段初始化 }
内容的提问来源于stack exchange,提问作者Ayush Kumar
相关产品推荐
相关产品推荐

