```go
package main
import (
"fmt"
)
func main() {
var n int
// Illegal
n = int(float64(2.5))
//ok
var f = float64(2.5)
n = int(f)
fmt.Printf("%T=%v,%T=%v\n", n, n, f, f)
}
```
没想明白为什么?谁知道问题如何理解?
不要告诉我:就是这样,哪样?
[A constant value x can be converted to type T if x is representable by a value of T.](https://go.dev/ref/spec#Conversions)
float64(2.5)是常量,常量类型转换需要常量能够被那个类型所表示,显然,2.5不能被int所表示。
f是变量,强转没有这个限制。
#3
更多评论
![image.png](https://static.golangjob.cn/220930/ca29a339311c3ab9069ba1a8212661ed.png)
#2