Go 指针

目录

指针

声明

取地址

结构体指针

指针的运算


指针

指针是Go语言的基本复合数据类型之一,它保存的是指向目标变量的地址。指针字面量使用*后跟其指向的类型名表示(*T)。Go同样支持多级指针(例如**T,表示指针的指针),通过在变量名前加&来获取变量的地址。

声明

使用var关键字可以声明一个指针类型,也可以在赋值语句中使用简短模式声明指针类型。

// 使用var声明一个指针
var (
    pointer *uint
)

// 简短模式声明一个指针
number := 3
pointer := &number

取地址

通过在变量名前加&来获取变量的地址。下面的例子中声明了一个指针变量pointer,pointer保存了整型变量number的地址。在下例中的代码每一次运行的结果输出都不一样(即pointer保存的地址不一样),是因为Go的内存分配器在每一次运行期间对变量的内存分配不一定与上一次相同。

package main

import (
    "fmt"
)

func main() {
    number := 11
    pointer := &number
    fmt.Println(pointer)
    // output: 0xc000018068
}

结构体指针

结构体指针访问结构体字段仍然使用"."操作符,这与结构体变量相同。

package main

import (
    "fmt"
)

type Student struct {
    Name  string
    Age   int
}

func main() {
    student := &Student{
        Name: "Luca",
        Age: 15,
    }

    fmt.Println(student.Age)
    // output: 15
}

指针的运算

不同于C/C++,Go不支持指针运算。例如下面的代码会出现错误:

package main

func main() {
    number := 23
    pointer := &number
    pointer++    // build error: invalid operation: pointer++ (non-numeric type *int)
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值