Golang 中一个 time.Duration 相关类型转换问题
Go语言精选
共 1496字,需浏览 3分钟
· 2020-08-26
int (const 和非 const) 转换为 time.Duration
这是一个常见的操作,但是我们会遇到以下代码中的问题,甚是疑惑~
问题
package main
import (
"fmt"
"reflect"
"time"
)
const a = 1
func test(a time.Duration) {
fmt.Printf("%v \n", a)
}
func main() {
b := a + 1
fmt.Printf("---- a = %v \n", reflect.TypeOf(a))
test(a)
fmt.Printf("---- b = %v \n", reflect.TypeOf(b))
// test(b) //> 打开注释后, 会编译不通过
}
原因
Assignability
A value x is assignable to a variable of type T ("x is assignable to T") if one of the following conditions applies:
- x's type is identical to T.
- x's type V and T have identical underlying types and at least one of V or T is not a defined type.
- T is an interface type and x implements T.
- x is a bidirectional channel value, T is a channel type, x's type V and T have identical element types, and at least one of V or T is not a defined type.
- x is the predeclared identifier nil and T is a pointer, function, slice, map, channel, or interface type.
- x is an untyped constant representable by a value of type T.
就是说,在 const 修饰的变量如果没有明确指明类型时,会根据需要做类型转换; 而非 const 修饰的变量不会。这就可以解释上述代码中的疑惑了。
reference: https://hao.studygolang.com/golang_spec.html#id273
原文作者:joyousx
原文链接:https://www.jianshu.com/p/be3a9b901cb8
推荐阅读
站长 polarisxu
自己的原创文章
不限于 Go 技术
职场和创业经验
Go语言中文网
每天为你
分享 Go 知识
Go爱好者值得关注
评论
真心建议大家搞个香港身份,再不冲就晚了
香港一直有“互联网荒漠”之称,疫情这三年,香港开始大力扶持互联网 科技工程 /IT产业,公布了《香港智慧城市蓝图》。目前规划已经覆盖到交通、医疗、经济、教育、环境等多个方面。目前在智能制造,5G网络、智慧城市等领域人才,通过香港优才计划入境都极具优势。什么是香港优才计划优才计划,全称优秀人才入境计划
公子龙
0
展讯平台手机重启问题分析指南
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、 User 版本 默认开启 sysdump 方法二、插入SD卡 抓取Sysdump log三、 sysdump log 分析四、展讯平台抓取重启 串口log的方案五、展讯平台判断重启类型六、展讯平台关闭
程序员Android
0
顶级 Javaer 都在用的 20 个类库,真香!
点击关注公众号,Java 干货及时推送↓推荐阅读:投了 100 多份简历后…优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库。我花了很多时间来学习API,尤其是在阅读了Effective Java 3rd Edition之后 ,Joshua Bloch建
Java技术栈
1
使用 GitHub Actions 构建 Golang PGO
今年 2 月,我宣布 Dolt 版本现已构建为配置文件引导优化 (pgo) 二进制文件,利用 Golang 1.20 的强大功能将 Dolt 的读取性能提高 5.3%。在我宣布这一消息之前,我们的一位常驻 Golang 专家 Zach 试验并测试了 Golang 的 pgo 功能
GoCN
0
字节面试:如何解决MQ消息积压问题?
面试题大全:www.javacn.siteMQ(Message Queue)消息积压问题指的是在消息队列中累积了大量未处理的消息,导致消息队列中的消息积压严重,超出系统处理能力,影响系统性能和稳定性的现象。1.消息积压是哪个环节的问题?MQ 执行有三大阶段:消息生产阶段。消息存储阶段。消息消费阶段。
Java中文社群
0
6 个火爆 GitHub 的后台管理模板,快来收藏!
将Python客栈设为“星标⭐”第一时间收到最新资讯今天来给大家介绍6个火爆 G 站的管理后台模板,有了它们,对于前端不是很熟悉的小伙伴来说,再也不用烦恼了,而且有一说一,即使是前端大牛,要想从零开发一套完整的管理模板,也不是一件容易的事情。1. vue-element-admin该项目是基于 Vu
Python客栈
0
【用户画像、标签体系、CDP&DMP&CRM】相关资料汇总
用户画像、标签体系等相关资料概览,已同步到知识星球存储供下载,不断更新中;需要源文件的朋友可以公众号后台回复:报告以上为用户画像、标签体系等相关资料概览,已同步到知识星球存储供下载,不断更新中;需要源文件的朋友可以公众号后台回复:报告
数据D江湖
13
人工智能周刊#17:Llama3、微调 LLMs 的 PyTorch 原生库、李彦宏内部讲话、900 个最受欢迎的AI 工具
在内部讲话中,李彦宏对大模型开源与闭源的路线选择,以及 AI 创业者应该专注模型还是应用等业界焦点话题,发表了自己的看法。人工智能周刊:关注Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Meta 最新发布 Llama 3 80 亿和 700 亿参数版本2、「抱抱脸」公
机器学习算法与Python实战
10