出于安全原因,Golang不允许以下之间的直接转换:
-
两个不同指针类型的值,例如 int64和 float64。
package main
import (
"fmt"
)
func main() {
var i float64 = 3.13
var j int64 = 5
p := &i
p = (*float64)(&j)
fmt.Println(p)
}
编译结果:
.\main.go:11:16: cannot convert &j (type *int64) to type *float64
错误: 进程退出代码 2.
- 指针类型和uintptr的值。
注意:指针之间不能直接转换,但是数值之间可以
package main
import (
"fmt"
)
func main() {
var i float64 = 3.13
var j int64
j = int64(i)
fmt.Println(j)
}
Golang类型转换限制

本文探讨了Golang中指针类型转换的限制,指出不同指针类型之间不能直接转换,如int64和float64指针,以及指针与uintptr的转换限制。同时,文章通过示例代码展示了编译错误信息,强调了Golang的安全性设计。
135

被折叠的 条评论
为什么被折叠?



