问题内容 据我了解,Go 是静态类型的,通常不进行隐式类型转换。因此,没有显式类型声明的常量是根据首次使用时的要求而定的。 因此,在下面的代码片段中,我希望 n 是 float64,因
据我了解,Go 是静态类型的,通常不进行隐式类型转换。因此,没有显式类型声明的常量是根据首次使用时的要求而定的。
因此,在下面的代码片段中,我希望 n
是 float64
,因为这就是 math.sin
所期望的。但是当打印出反射类型时,我看到了 int
。
package main
import (
"fmt"
"math"
"reflect"
)
func main() {
const n = 5000 // No explict type
// fmt.Println(reflect.TypeOf(n)) // this would print "int"
fmt.Println(math.Sin(n)) // math.Sin expects a float64
fmt.Println(reflect.TypeOf(n)) // print "int"
}
这里到底发生了什么? n
实际上有隐式 int 类型吗?或者反射不会显示这样的实际类型情况?我不认为 math.sin
正在对其参数进行类型转换,因为如果我指定显式类型,编译器会抛出错误。
[无类型常量的类型]根据首次使用时的要求而定。
这就是你理解错误的地方。每种用途都会独立选择一种类型。
math.Sin 需要 float64 参数,因此编译器必须在此处选择 float64。
reflect.TypeOf 采用 interface{} 参数,因此编译器可以自由选择任何数字类型(因为它们都实现空接口)。这里选择了默认的整数类型:int。
以上就是隐式类型的类型反射如何工作?的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 隐式类型的类型反射如何工作?
本文链接: https://www.lsjlt.com/news/561367.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0