Go语言基础之指针

Posted sss4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言基础之指针相关的知识,希望对你有一定的参考价值。

前言

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

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

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

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

 

package main

import "fmt"

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

  

 

 

什么是指针

技术图片

 

 

不管是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

以上是关于Go语言基础之指针的主要内容,如果未能解决你的问题,请参考以下文章

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

Go语言基础之指针

Go语言基础之指针

Go语言基础之指针

8.Go语言基础之指针

Go语言基础之指针