对go中的类型转换有些疑惑。
下面的代码中,为什么通过变量后就可以正常执行呢?
代码是在编译阶段报错。
```go
// 下面两行代码可以正常执行
x := uint64(256)
fmt.Println(byte(uint64(x))) // 正常执行
// 下面的代码无法正常执行
fmt.Println(byte(uint64(256))) // constant 256 overflows byte
```
更多评论
官方说法 A constant value x can be converted to type T if x is representable by a value of T.
详见 https://blog.csdn.net/qq_30895047/article/details/103829227
#1
但这句话还是没解决我的疑问
通过x := uint64(256) 中 x的值是超过byte的表示范围的,确可以正常执行
直接用byte转换uint64(256) 就报错, 报错的原因怀疑是因为 直接用uint64(256)时,uint64(256)表示的是一个常量
您的blog里写的太底层了,我看不懂
#2