gpt4 book ai didi

go - 将 int 转换为指针?

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:51 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com