Go 语言指针

Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。

接下来让我们来一步步学习 Go 语言指针。

我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

以下实例演示了变量在内存中地址:

package main

import "fmt"

func main() {

var a int = 10

fmt.Printf("变量的地址: %x\n", &a )

}

执行以上代码输出结果为:

变量的地址: 20818a220

现在我们已经了解了什么是内存地址和如何去访问它。接下来我们将具体介绍指针。

什么是指针

一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。

类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:

var var_name *var-type

var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:

var ip *int /* 指向整型*/

var fp *float32 /* 指向浮点型 */

本例中这是一个指向 int 和 float32 的指针。

如何使用指针

指针使用流程:

定义指针变量。

为指针变量赋值。

访问指针变量中指向地址的值。

在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。

package main

import "fmt"

func main() {

var a int= 20 /* 声明实际变量 */

var ip *int /* 声明指针变量 */

ip = &a /* 指针变量的存储地址 */

fmt.Printf("a 变量的地址是: %x\n", &a )

/* 指针变量的存储地址 */

fmt.Printf("ip 变量储存的指针地址: %x\n", ip )

/* 使用指针访问值 */

fmt.Printf("*ip 变量的值: %d\n", *ip )

}

以上实例执行输出结果为:

a 变量的地址是: 20818a220

ip 变量储存的指针地址: 20818a220

*ip 变量的值: 20

Go 空指针

当一个指针被定义后没有分配到任何变量时,它的值为 nil。

nil 指针也称为空指针。

nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。

一个指针变量通常缩写为 ptr。

查看以下实例:

package main

import "fmt"

func main() {

var ptr *int

fmt.Printf("ptr 的值为 : %x\n", ptr )

}

以上实例输出结果为:

ptr 的值为 : 0

空指针判断:

if(ptr != nil) /* ptr 不是空指针 */

if(ptr == nil) /* ptr 是空指针 */

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

JavaScript 10分钟入门

简介 JavaScript是一门面向对象的动态语言,他一般用来处理以下任务: 1、修饰网页 生成HTML和CSS 生成动态HTML内容 生成一些特效 2、提供...

372100
来自专栏锦小年的博客

python学习笔记4.3-python高级之元素的分解

序列分解为单独的变量 1.1 将一个包含N个元素的元组或者序列分解成为N个单独的变量。 在python中任何序列或者元素都可以通过一个简单的赋值来分解为...

21750
来自专栏java一日一条

JavaScript 中 this 的使用技巧总结

在 js 中,this 这个上下文总是变化莫测,很多时候出现 bug 总是一头雾水,其实,只要分清楚不同的情况下如何执行就 ok 了。

9130
来自专栏乐百川的学习频道

C++ 变量和复合类型

前面说了C++的基本数据类型,下面来看看在C++中如何定义变量和常量。 变量 定义和初始化 C++定义变量的方式和C语言一样,也可以在定义的同时初始化。值得一提...

261100
来自专栏python学习之旅

Python笔记(九):字符串操作

(一)    字符串 单引号、双引号、三重引号都可以作为字符串的开始和结束,三重引号可以直接输入多行字符串。三重引号可能一般是用来写多行注释。 ? (二)   ...

41770
来自专栏散尽浮华

python基础随笔

一: 作用域 对于变量的作用域,只要内存中存在,该变量就可以使用。 二:三元运算 name = 值1 if 条件 else 值2 如果条件为真:result =...

23390
来自专栏mwangblog

python条件执行

15140
来自专栏北京马哥教育

最全 Python3 函数知识点大全

284110
来自专栏五毛程序员

C++知识点整理——持续更新

22440
来自专栏WindCoder

JavaScript中字符串与数组的相关操作

如果不包含在数组中,则返回 -1,若是包含,则返回对应元素所在数组中的下标值,该值从0开始;

13710

扫码关注云+社区

领取腾讯云代金券