gpt4 book ai didi

pointers - 如何存储指针指向的地址?

转载 作者:IT王子 更新时间:2023-10-29 00:51:49 25 4
gpt4 key购买 nike

我正在尝试创建我创建的对象地址与分配时间的映射。关键是调用 new() 返回的地址。如何获取 new() 返回的地址?

type T struct{a, b int }

func main(){

var t int64 = time.Nanoseconds()
memmap := make(map[uint8]int64)
fmt.Printf("%d\n", t)
var ptr *T = new(T)
ptr.a = 1
ptr.b = 2
fmt.Printf("%d %d %p %T\n", ptr.a, ptr.b, ptr, ptr)
//memmap[ptr] = t //gives error
//var temp uint8 = ptr//gives error
}

请告诉我映射中关键字段的类型应该是什么,以便我可以存储 new() 返回的地址?我计划对不同的类型使用 new(),获取分配的地址并将其映射到创建时间。

最佳答案

您可以使用 unsafe 包中的 Pointer 类型,但也就是说,包名暗示它是不安全的。地址本身是一个不透明的东西,实际上单独使用地址值用于映射的用处很小,最好使用类型和地址的元组。这就是 unsafe.Reflect 为您提供的。 reflect 包为您提供函数 UnsafeAddr 以及更多。

我建议您阅读reflectunsafe 包的包文档。

关于pointers - 如何存储指针指向的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183739/

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