什么是指针
一个指针变量指向了一个值的内存地址。 类似于变量和常量,在使用指针前你需要声明指针。
指针声明格式如下:
var var_name *var-type
var-type 为指针类型,
var_name 为指针变量名,
* 号用于指定变量是作为一个指针。
以下是有效的指针声明:
var ip *int /* 指向整型*/
var fp *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 是空指针 */
Go 语言指针数组
package main
import "fmt"
const MAX int = 3
func main() {
a := []int{10,100,200}
var i int
var ptr [MAX]*int;
for i = 0; i < MAX; i++ {
ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
}
for i = 0; i < MAX; i++ {
fmt.Printf("a[%d] = %d\n", i,
*ptr[i] )
}
}
以上代码执行输出结果为:
a[0] = 10
a[1] = 100
a[2] = 200
Go 语言指针作为函数参数
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 100
var b int= 200
fmt.Printf("交换前 a 的值 : %d\n", a )
fmt.Printf("交换前 b 的值 : %d\n", b )
/* 调用函数用于交换值
* &a 指向 a 变量的地址
* &b 指向 b 变量的地址
*/
swap(
&a, &b);
fmt.Printf("交换后 a 的值 : %d\n", a )
fmt.Printf("交换后 b 的值 : %d\n", b )
}
func
swap(x *int, y *int) {
var temp int
temp = *x /* 保存 x 地址的值 */
*x = *y /* 将 y 赋值给 x */
*y = temp /* 将 temp 赋值给 y */
}
以上实例允许输出结果为:
交换前 a 的值 : 100
交换前 b 的值 : 200
交换后 a 的值 : 200
交换后 b 的值 : 100
分享到:
相关推荐
在本节 Go 语言指针课程中,我们将深入理解这一重要的编程概念,它在 Go 语言中的作用以及如何使用指针来优化程序性能。指针是编程语言中的一个关键元素,尤其是在系统级编程和高性能计算中。让我们逐一探讨这些知识...
Go语言指针访问结构体方法的介绍,实际上是要告诉我们在Go中如何使用指针来操作结构体实例的字段。在Go中,结构体的字段可以通过指针直接访问,这种访问是透明的,也就是说你不需要进行解引用操作。这和C++等其他...
Go语言,又称为Golang,是由Google公司开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它由Robert Griesemer、Rob Pike及Ken Thompson三位开发者设计,旨在提高软件的构建效率和可维护性,特别...
在Go语言基础部分,作者详细介绍了Go语言的基础知识,包括变量、基本类型、类型转换、常量、字符串、运算符、指针、保留字、控制结构、自定义类型、初始化、内置函数等内容。 在变量部分,作者讲解了变量的定义和...
Go语言指针 作业 Day03 Go语言函数 defer与异常 Go语言数组 Go语言结构体 日期与时间 非类型安全指针 Go语言切片 作业 Day04 重点知识回顾与答疑 Day05 字符串 Go语言Map Go语言接口 错误处理 空接口与类型断言 函数...
5. **指针与内存管理**:讲解Go语言中的指针操作和内存管理,包括指针的使用、引用类型和垃圾回收机制。 6. **错误处理**:Go语言采用错误处理模式,笔记会介绍如何处理和报告错误,以及 panic 和 recover 的用法。...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。它旨在提高编程效率,简化并发编程,并强调简洁的编程哲学。Go语言的设计受到了多门经典编程语言的影响,如C语言、...
在Go语言中,指针是程序设计中的一个重要概念,它允许我们存储变量的内存地址,进而可以修改变量的值,即使这个变量是在函数内部定义的。对于有一定基础的Go编程人员来说,理解并熟练掌握指针的使用是提高编程效率和...
谷歌的Go语言,也被称为Golang,是由Google在2009年推出的一种开源编程语言。它被设计为简洁、高效、并发性好,并且具有内置的垃圾回收机制,使得开发人员可以更专注于编写可维护的代码。这个“谷歌GO语言教程PDF”...
《Go语言实战》是一本深度解析Go语言的实践性书籍,其源码是学习和理解Go语言编程理念、设计模式以及实际应用的重要资源。通过分析这些源码,我们可以深入掌握Go语言的核心特性和最佳实践。 Go语言,由Google公司...
Go语言101.pdf版 Go语言101.pdf版是Go语言入门指南,涵盖了Go语言的基本概念、语法、语义、标准库和高级主题等多方面的知识点。本书共50章节,从Go语言的基本概念开始,逐步深入到高级主题,旨在帮助读者系统地学习...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它旨在提高编程效率,简化系统编程,并且能够支持大规模的网络服务和分布式计算。Go语言实战教程是学习Go...
Go语言之所以被称为网络和多核时代的C语言,是因为它从C语言继承并发扬了多种编程思想,包括表达式语法、控制流结构、基础数据类型、调用参数传值、指针等,并在并发编程上进行了革命性的创新。 Go语言的发展历史...
Go语言,又称Golang,是Google在2009年推出的一种开源编程语言,由罗伯特·格瑞史莫、罗布·派克和肯特·贝克等大神设计。Go语言的设计目标是简单、高效、安全,特别适合构建网络服务和并发程序。它吸收了C语言的...
Go语言提供了自动垃圾回收机制,开发者不需要手动管理内存,减少了内存溢出和野指针的风险。 更丰富的内置类型 Go语言提供了更多的内置类型,例如数字、字符串、数组、slice、map、struct等,方便开发者编写程序。 ...
Go语言(又称Golang)是一种静态类型的编程语言,由Google工程师Robert Griesemer、Rob Pike及Ken Thompson在2007年开始设计并开发,于2009年正式发布。它被设计成一种简洁、高效且易于学习的语言,旨在解决现代软件...
### Go语言入门教程知识点详解 #### 一、Go语言的历史背景与起源 - **Limbo语言的影响**:Limbo语言被视为Go语言的前身之一,它不仅由相同的设计团队开发,而且Go语言还从Limbo中继承了许多优秀特性。 - **贝尔...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收式的、具有C风格的编程语言。它的设计目标是提高编程效率,简化多线程编程,以及优化网络和系统服务的开发。下面将详细讨论Go...