Go语言指针

一、什么是指针

一个指针变量指向了一个值的内存地址。

二、基本介绍

  1. 基本数据类型的变量存的是值,也叫值类型
  2. 指针类型的变量存的是一个地址,这个地址指向的空间存的才是值。例如:var ptr *int
  3. 获取变量的地址,用&,例如:var num int,获取num的地址,&num
  4. 获取指针类型变量所指向的值,使用*,例如:var ptr *int,使用*ptr获取ptr指向的值。

例子:

package main

import "fmt"

func main() {
	var i int = 10
	fmt.Println("变量i的值=",i)
	// 获取变量的地址用 &
   	fmt.Println("变量i的地址=",&i)
	// 1.ptr是一个指针变量
	// 2.ptr的类型是*int
	// 3.ptr的值是&i,即为变量i的内存地址
	var ptr *int = &i
	fmt.Println("指针变量ptr的值=",ptr)
	// 获取指针变量指向的值用 *
	fmt.Println("指针变量ptr指向的值=",*ptr)
	// 指针变量本身在内存中也有地址
	fmt.Println("指针变量ptr本身得地址=",&ptr)
}

运行结果:

变量i的值= 10
变量i的地址= 0xc000086020
指针变量ptr的值= 0xc000086020
指针变量ptr指向的值= 10
指针变量ptr本身得地址= 0xc000088020

上述例子在内存中的示意图如下:
image

注意细节

  1. 值类型对应的都有指针类型,形式为:*数据类型,例如int对应的指针类型*int。
  2. 值类型包括,基本数据类型int系列,bool,string,struct,数组。
posted @ 2021-05-05 09:39  若雨蚂蚱  阅读(85)  评论(0编辑  收藏  举报