在 C/C++ 中,我可以将 int
转换为 int*
,如下所示
int i = 0x1040c108;
int *p = (int*)i; // compiles
但为什么我不能在 Go 中执行此操作?
addr := 0x1040c108
p := (*int)(addr) // Error: cannot convert addr (type int) to type *int
在golang中实现这个的方法是什么?
最佳答案
检查不安全的包。请注意,它被称为“不安全”是有原因的,除非您确实需要执行绕过类型安全的操作,或直接在内存上操作,否则可能不应该使用它。
https://play.golang.org/p/WUavNAlyVP
package main
import (
"fmt"
"unsafe"
)
func main() {
fmt.Println("Hello, playground")
var intaddr int = 0x1040c108
var addr uintptr = uintptr(intaddr)
ptr := unsafe.Pointer(addr)
p := (*int)(ptr)
fmt.Printf("Type: %T, Ptr: %v, Val: %d", p, p, *p)
}
关于go - 将 int 转换为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767898/