在Golang中指针是一种类型,指向变量所在的内存单元!不是内存地址

    1. var num *int
    2. // 分配内存地址
    3. num = new(int)
    4. // 设置值
    5. *num = 10
    6. // 打印内存地址
    7. fmt.Printf("%p\n", num)
    8. // 打印指针变量指向的内存地址
    9. fmt.Printf("%p\n", &num)
    10. // 打印指针变量值
    11. fmt.Printf("%d\n", *num)

    指针地址不等于内存地址,指针地址指向的是存储内存地址的指针变量地址,而内存地址指的是值实际存放的内存单元地址,参考以下代码理解:

    1. var num int
    2. np := &num
    3. // 获取变量的内存地址
    4. fmt.Printf("%p\n", &num)
    5. // 获取指针变量所指向的内存地址
    6. fmt.Printf("%p\n", np)
    7. // 获取指针变量内存地址
    8. fmt.Printf("%p\n", &np)