你全力做到最好,可能还不如别人随便搞搞!

发掘积累过程的快感

首页 » BIBLE模型 » GoLang » golang 指针变量类型与变量类型区别

golang 指针变量类型与变量类型区别


初学 golang 时,如果对指针不太了解的话,经常会在指针这个概念中给搞晕,所以这里就记录下初学 golang 时对指针的理解。

首先各种 golang 学习书籍中,会遇到这样的介绍。

指针(pointer)概念在 Go 语言中被拆分为两个核心概念:

  • 类型指针,允许对这个指针类型的数据进行修改。传递数据使用指针,而无须拷贝数据。类型指针不能进行偏移和运算。
  • 切片,由指向起始元素的原始指针、元素数量和容量组成。

认识指针地址和指针类型

每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go 语言中使用 & 作符放在变量前面对变量进行“取地址”操作。

格式如下:

ptr := &v    // v的类型为T

其中 v 代表被取地址的变量,被取地址的 v 使用 ptr 变量进行接收,ptr 的类型就为 *T,称做 T 的指针类型。* 代表指针。

例2:
x:=1
y:=&x
fmt.Printf("x=%d\n",x) // x=1
fmt.Println(y) // 0xc0000823f8 //内存地址
*y=8
fmt.Printf("x=%d\n",x) //x=8

上面的例子中,y 就是一个指针类型,如果遇到下面这样的声明方式

例3:
var x int
var y *int //表示y 是一个指向int类型变量的内存地址
a=1
y=&x

这个举例中,第一行 var x int 和 第三行 a=1 其实就是例 2 中第一行的详细声明方式,例二中只是一个简明的方法;第二行和第四行也就是例 2 中第二行的详细声明方式。

互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号