由于库作者没有构造切片标头供您使用,而是需要将返回值强制转换为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)}
当然,您需要非常确定自己知道有多少个元素,以便不访问无效的内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)