Go语言基础之指针

前言

区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。

所有Go里面的指针比较简单,只需要记住以下几点:

&变量名: 获取变量的内存地址

*pointor:通过指针获取指针对应变量的值

package main

import "fmt"

func main() {
	n := 28
	fmt.Println(&n)
	//1.&变量:获取变量的内存地址
	p := &n
	fmt.Printf("%T\n", p) //*int 存储int变量类型的内存地址的指针
	//2.*指针变量:获取指针指向变量的值
	v1 := *p
	fmt.Println(v1)
	fmt.Printf("%T\n", v1)
}

什么是指针

Go语言基础之指针

不管是Python还是Go程序 执行过程中数据载入内存后,在计算机内存中都有它们的内地址,这就是指针。

指针的作用就是保存某1个数据在内存中的内存地址,方便我们在内存中快速查找到该数据(变量)。

在Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int*int64*string等。

指针操作

package main

import "fmt"

func main() {
	//基本数据类型在内存中的布局
	var i int = 10
	//获取变量i的内存地址
	fmt.Println("变量i的内存地址:", &i)
	//声明1个 ptr指针变量,指向1个类型为int的内存地址
	var ptr *int = &i
	fmt.Println(ptr)
	//获取指针的内存地址
	fmt.Println(&ptr)
	//通过指针获取变量i对应的值(10)
	fmt.Println(*ptr)
	//通过指针修改变量i对应的值
	*ptr = 222
	fmt.Println(i)

	//通过指针修改变量的值
	name := "成龙"
	age := "18"

	por1 := &name
	*por1 = "JackCheng"
	por1 = &age
	*por1 = "68"
	fmt.Println(name, age)

}

see also

相关推荐