Go 指针运算
Posted 码小余の博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 指针运算相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
"unsafe"
)
func main()
var intArr [3]int // int字节数根据电脑来分配(64位的8字节,32位的4字节)
intArr[0] = 1
intArr[1] = 3
intArr[2] = 10
fmt.Println(intArr)
fmt.Printf("intArr的地址=%p intArr[0] 地址%p intArr[1] 地址%p intArr[2] 地址%p\\n", &intArr, &intArr[0], &intArr[1], &intArr[2])
// 根据 intArr[0] 指针地址获取 intArr[1] 的指针地址,多以同样能获取到 intArr[1] 指针位置的值
first_unsafe_point := unsafe.Pointer(&intArr[0])
uintptr_first_unsafe_point := uintptr(first_unsafe_point) + 8
fmt.Println("intArr[0]位置指针 + 8 后的指针位置:", uintptr_first_unsafe_point)
uintptr_second_unsafe_point := unsafe.Pointer(uintptr_first_unsafe_point)
fmt.Println("intArr[0]位置指针 + 8 后的指针位置,转成unsafe_Pointer类型:", uintptr_second_unsafe_point)
pb := (*int)(uintptr_second_unsafe_point)
fmt.Println("uintptr_second_unsafe_point指针位置的值:", *pb)
以上是关于Go 指针运算的主要内容,如果未能解决你的问题,请参考以下文章