GO语言基础教程(94)Go指针的使用方法:别怕!Go指针就像外卖单号:掌握这几点直接操作内存不翻车

你是不是一直觉得指针是编程里最吓人的概念?别慌,当初我学Go的时候也这样想,直到我把指针想象成外卖快递单号——你不需要整个外卖柜,只需要单号就能拿到麻辣烫!在Go中,指针就是内存地址的“单号”,让你直接操作数据,避免不必要的拷贝。

今天咱们就用最接地气的方式,彻底搞懂Go指针的使用方法。我保证,看完这篇,你不仅能理解指针为什么是性能优化的利器,还能在实际项目中灵活运用!

一、为什么Go需要指针?先从外卖说起

想象一下,你点了一份超大的麻辣香锅(包含10种食材)。如果店家给你送整个厨房过来,是不是太夸张了?更聪明的做法是给你一个取餐码,凭码取餐。

在Go中,当你传递一个大型结构体给函数时,如果没有指针,就相当于把整个厨房都搬过去——产生完整的副本,既耗时间又占内存。而传递指针,就像只给取餐码,轻便高效。

type BigData struct {
    data [1000000]int // 100万个整数的数组
}

// 这样传参会很慢,因为会拷贝整个数组
func processData(b BigData) {
    // 处理数据
}

// 这样传参很快,只传内存地址
func processDataByPointer(b *BigData) {
    // 处理数据
}

看到区别了吗?指针就是让你的代码跑得更快的秘密武器!

二、指针基础:从“找房子”开始理解

2.1 什么是指针?

简单说,指针就是内存地址。每个变量都住在内存的某个“房子”里,指针就是这个房子的门牌号。

var score int = 95
var scorePointer *int = &score

这里:

  • score 是变量名,相当于住户姓名
  • &score 取地址操作,相当于问“这个住户住哪?”
  • *int 是指针类型,表示“指向整数的指针”

2.2 声明和初始化指针

package main

import "fmt"

func main() {
    // 方法1:先声明变量,再取地址
    name := "小明"
    var namePtr *string = &name
    
    // 方法2:使用new函数直接创建
    agePtr := new(int)
    *agePtr = 25  // 给指针指向的位置赋值
    
    fmt.Printf("name: %s, 地址: %p\n", name, namePtr)
    fmt.Printf("age: %d, 地址: %p\n", *agePtr, agePtr)
}

运行结果:

name: 小明, 地址: 0xc000010200
age: 25, 地址: 0xc000018028

看到那个0

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

值引力

持续创作,多谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值