出于安全原因,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)
}

 

更多推荐