GO —— 指针的妙用

本文详细介绍了Go语言中的指针用法,包括空指针的概念及其判别,指针数组的声明与使用,指向指针的指针变量的声明和解引用,以及指针作为函数参数的应用。通过示例代码,阐述了指针在Go语言中的重要性和灵活性。
摘要由CSDN通过智能技术生成

目录

GO 指针

1,空指针

2,指针数组

3,指向指针的指针

4,指针作为函数参数


GO 指针

Go中指针很容易,使用指针可以更简单的执行一些任务. 变量是一种使用方便的占位符,用于引用计算机内存地址。 取地址符是&,放到一个变量前使用就会返回相应变量的内存地址。

指针概念 一个指针变量指向了一一个值的内存地址。 类似于变量和常量,在使用指针前需要声明指针。指针声明格式如下:

var var_ name *var-type

var-type为指针类型, var_ name为指针变量名,*号用于指定变量是作为一个指针。示例中这是-个指向int和 float32的指针。

var ip *int   /*指向整型*/
var fp *float32   /*指向浮点型*/

使用指针流程

●定义指针变量。

●为指针变量赋值。

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

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

在使用指针前,我们需要明白两个操作符的含义 ①操作符& : 当作二元操作符时,是按位与操作;当作一元操作符时,是返回该变量的内存地址。 ②操作符* : 当作二元操作符时,是相乘的操作;当作一元操作符(解引用操作符)时,是返回该指针指向的变量的值,其实就是解除变量的指针引用,返回该变量的值。

示例:

package main
​
import "fmt"
​
//指针的声明和赋值
func main() {
    var (
        a  int  = 20 //实际变量
        ip *int      //指针变量
    )
    //a的地址赋值给指针ip
    ip = &a
    fmt.Println("a的值:", a)
    fmt.Println(":", &a)
    fmt.Println("指针ip的值:", ip)
    fmt.Println("指针ip指向的值", *ip)
}
[Running] go run "f:\goProject\src\dev_code\day11\example1\main\main.go"
a的值: 20
: 0xc000014098
指针ip的值: 0xc000014098
指针ip指向的值 20
​
[Done] exited with code=0 in 0.68 seconds

1,空指针

当一个指针被定义后没有分配到任何变量时,它的值为nil. nil指针也称为空指针。 nil在概念上和其它语言的null、None、nil、 NULL一样,都指代零值或空值。 一个指针变量通常缩写为ptr

示例:

package main
​
import "fmt"
​
//指针的声明和赋值
func main() {
    var (
        ptr *int //指针变量,未赋值为nul
    )
    fmt.Println("指针ptr指向的值", ptr)
}
[Running] go run "f:\goProject\src\dev_code\day11\example1\main\main.go"
指针ptr指向的值 <nil>
​
[Done] exited with code=0 in 0.456 seconds

空指针判断

示例:

package main
​
import "fmt"
​
//指针的声明和赋值
func main() {
    var (
        ptr *int //指针变量,未赋值为nul
    )
    fmt.Println("指针ptr指向的值", ptr)
    if ptr == nil {
        fmt.Println("指针ptr为空指针")
    } else {
        fmt.Println("指针ptr指向的值", ptr)
    }
​
}
[Running] go run "f:\goProject\src\dev_code\day11\example1\main\ma
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值