GO语言基础教程(93)Go指针之“取地址”操作:Go指针“取地址”操作:原来内存地址是这么接头的!

第一部分:指针?先别怕,就是找个“家庭住址”!

每次听到“指针”这两个字,很多编程新手就开始头皮发麻,仿佛遇到了编程生涯中的第一大敌。别紧张,今天咱们就用最接地气的方式,把这个看似高深的概念拆解明白。

想象一下,你点了一份外卖,外卖小哥问你:“您好,您家住哪儿?”你回答说:“XX小区XX栋XX单元XX室”。这个地址,其实就是你在现实世界中的“指针”——它不包含你家具体长什么样,但能准确告诉别人去哪里找到你。

在Go语言的世界里,每个变量也都住在内存这个“大城市”里,它们都有自己的“家庭住址”,也就是内存地址。而&操作符,就是帮我们获取这个地址的“地址查询器”。

为什么需要知道变量的地址?

当你传递一个变量给函数时,Go默认会创建这个变量的一个副本。想象一下,如果你要把一本厚达500页的书给朋友看,你是选择:

  • 把整本书复印一份给他(值传递)
  • 还是直接告诉他:“书在我家书架上,地址是XXX,你自己来看”(指针传递)

显然,第二种方式更高效,特别是当这本书很厚重的时候。在编程中,当我们需要操作大型数据结构或者希望在函数内部修改外部变量时,指针就派上了大用场。

第二部分:&操作符初体验:原来这么简单!

在Go语言中,取地址操作简单到令人发指——只需要在变量前面加上&符号就可以了。

package main

import "fmt"

func main() {
    // 创建一个普通变量
    myHouse := "三室一厅,带阳台"
    
    // 获取myHouse的地址(指针)
    houseAddress := &myHouse
    
    fmt.Println("我的房子配置:", myHouse)
    fmt.Println("我的房子地址:", houseAddress)
    fmt.Printf("地址的类型是:%T\n", houseAddress)
}

运行结果:

我的房子配置: 三室一厅,带阳台
我的房子地址: 0xc000010200
地址的类型是:*string

看到那个以0x开头的奇怪数字了吗?这就是内存地址的“身份证号”,用十六进制表示。每次运行程序,这个地址可能会不一样,因为变量被分配到了内存的不同位置。

指针类型的小秘密

注意到输出中的*string了吗?这就是指针类型的表示方式:

  • *string:指向string类型的指针
  • *int:指向int类型的指针
  • *float64:指向float64类型的指针

简单来说,就是在原有类型前面加个*号。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值