Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。
接下来让我们来一步步学习 Go 语言指针。
我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
以下实例演示了变量在内存中地址:
package main
import "fmt"
func main() {
var a int = 10
fmt.Printf("变量的地址: %xn", &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 变量的地址是: %xn", &a )
fmt.Printf("ip 变量的存储地址: %xn", ip )
fmt.Printf("*ip 变量的值: %dn", *ip )
}
以上实例执行输出结果为:
a 变量的地址是: 20818a220
ip 变量的存储地址: 20818a220
*ip 变量的值: 20
当一个指针被定义后没有分配到任何变量时,它的值为 nil。
nil 指针也称为空指针。
nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。
一个指针变量通常缩写为 ptr。
查看以下实例:
package main
import "fmt"
func main() {
var ptr *int
fmt.Printf("ptr 的值为 : %vn", ptr )
fmt.Printf("ptr 的值为 : %#vn", ptr )
}
以上实例输出结果为:
ptr 的值为 : <nil>
ptr 的值为 : (*int)(nil)
空指针判断:
if(ptr != nil)
if(ptr == nil)
接下来我们将为大家介绍Go语言中更多的指针应用:
内容 | 描述 |
---|---|
Go 指针数组 | 你可以定义一个指针数组来存储地址 |
Go 指向指针的指针 | Go 支持指向指针的指针 |
Go 向函数传递指针参数 | 通过引用或地址传参,在函数调用时可以改变其值 |
介绍商品卡片,用于展示商品的图片、价格等信息。引入通过以下方式来全局注册组件,更多注册方式请参考组件注册。import { creat...
介绍用于在内容加载过程中展示一组占位图形。实例演示引入通过以下方式来全局注册组件,更多注册方式请参考组件注册。import { c...
引导用户按照流程完成任务的分步导航条,可根据实际应用场景设定步骤,步骤不得少于 2 步。基础用法简单的步骤条。设置active属...
Timeline 时间线可视化地呈现时间流信息。基础用法Timeline 可拆分成多个按照时间戳排列的 activity,时间戳是其区分于其他控件...
表格,在Bootstrap4中经常被使用到。那么在Bootstrap4中,如何设置各种样式的表格呢?基础表格在Bootstrap4中,我们可以使用.tab...
卡片是一个灵活的、可扩展的内容窗口。它包含了可选的卡片头和卡片脚、一个大范围的内容、上下文背景色以及强大的显示选项。创建...
弹出框控件和提示框有点类似,用户用鼠标点击元素后,就会显示。不过和提示框不同的是,弹出框能够显示的内容更多。创建弹出框通...
这些是创建请求时可以用的配置选项。只有url是必需的,如果没有指定method,请求将默认使用get方法。{// url 是用于请求的服务器...