uintptr和unsafe.Pointer都是Go语言中处理底层指针的类型。
uintptr是一个整数类型,用于存储指针类型的数值,它的大小和指针大小相同,通常是32位或64位。uintptr可以存储指向任何类型的指针,但它不能直接解引用,也不能用于进行指针运算。
unsafe.Pointer是一个指针类型,用于存储任意类型的指针。unsafe.Pointer可以转换为任何指针类型,包括uintptr,这意味着它可以用于进行指针运算。但是,unsafe.Pointer不能直接解引用,因为它不知道指向的类型,需要使用类型转换将其转换为指向正确类型的指针。
总之,uintptr是一个无类型的整数类型,不能直接解引用或进行指针运算,只能用于存储指针类型的数值。而unsafe.Pointer是一个指针类型,可以转换为任何指针类型,包括uintptr,可以进行指针运算,但需要小心使用,因为它可以绕过Go语言的类型安全检查。
发布于 2023-02-17 21:55・IP 属地广东