CGO:如何在Golang中使用指针从C中的数组访问数据

CGO:如何在Golang中使用指针从C中的数组访问数据,第1张

CGO:如何在Golang中使用指针从C中的数组访问数据

由于库作者没有构造切片标头供您使用,而是需要将返回值强制转换为an

unsafe.Pointer
,然后转换为a,
uintptr
这将允许您对其执行指针算术,以稍后在内存中获取元素

这是一些示例代码,应在移动 *** 场上按原样运行。

package mainimport (    "fmt"    "unsafe")func main() {    nums := []uint8{1, 2, 3, 4, 5, 6, 7, 8}    val := &nums[0] // val is the equivalent of the *uint8 the Data function returns    ptr := unsafe.Pointer(val)    sixthVal := (*uint8)(unsafe.Pointer(uintptr(ptr) + 5*unsafe.Sizeof(*val)))    fmt.Println("Sixth element:", *sixthVal)}

当然,您需要非常确定自己知道有多少个元素,以便不访问无效的内存。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5013040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存