872 字
约 2 分钟
12
11. Go语言指针
2026-09-25
无标签
  1. Go语言指针 秀才 2025年2月14日 大约 4 分钟 Go语言 Go语言 golang go基础语法 指针 此页内容 1. 指针是什么 2. 创建指针 2.1 声明指针 2.2 new()函数 1. 指针是什么 像c语言一样,Go语言也有指针的概念。简单理解,指针就是地址,指针变量就是存放地址的变量。在一个变量前加上*,那么这个变量就是指针变量,指针变量只能存放地址。 1个指针变量可以指向任何一个值的内存地址,它所指向的值的内存地址在32和64位机器上分别占用4或8个字节,占用字节的大小与所指向的值的大小无关。 2. 创建指针 2.1 声明指针 我们可以像声明其它类型的变量一样,声明一个指针变量
var a *int

上述方法声明了一个整形指针变量a,但是该变量还没有存放任何地址,操作系统并未为其指向的内容分配内存,即该指针没有指向任何内容,所以它是一个空指针。

var b int = 3 
a = &b

此时a不再是一个空指针,a指向一个整形变量,该变量的值是3。 要获取指针变量所指向的内容,很简单,在变量前加*即可

package main

import "fmt"

func main() {
 var a *int 
 fmt.Printf("赋值前a: %v\n", a)
 
 var b int = 3 
 a = &b // a存放的是b的地址
 fmt.Printf("赋值后a: %v\n", a) // 打印出b的地址
 fmt.Printf("a指向的内容是: %v\n", *a) // *a表示a存放的地址对应的内存存放的内容,这里为整数3
}

运行结果:

赋值前a: <nil>
赋值后a: 0x14000018000
a指向的内容是: 3

2.2 new()函数 Go语言还提供了另外一种方法来创建指针变量,使用 new 函数创建

new(type)

代码展示:

package main

import "fmt"

func main() {
 s := new(string)
 fmt.Printf("赋值前s: %v\n", s)
 fmt.Printf("赋值前s的内容: %v\n", *s)
 
 *s = "Golang学习之路"
 fmt.Printf("赋值h后s: %v\n", s)
 fmt.Printf("赋值后s的内容: %v\n", *s)
}

运行结果:

赋值前s: <nil>
赋值前s的内容: 
赋值后s: 0x14000018000
赋值后s的内容: Golang学习之路

可以看到,通过new函数创建指针的时候,系统会为其分配内存,所以两次都能打印出地址,但是,在没有对其赋值的时候,系统会存放默认值,string类型的就是空字符串""。 关注秀才公众号: IT杨秀才 ,领取精品学习资料 公众号后台回复: Go面试 ,领取Go面试题库PDF 公众号后台回复: Go学习 ,领取Go必看书籍 公众号后台回复: 大模型 ,领取大模型学习资料 公众号后台回复: 111 ,领取架构学习资料 公众号后台回复: 26届秋招 ,领取26届秋招企业汇总表

🔥 配套实战项目,拆得开、跑得起、能写进简历 多 Agent 编排 + RAG 混合检索 · 31 篇深度教程 + 50+ 面试题 点击查看 DevSupport AI 实战项目 → 在 GitHub 上编辑此页 上次编辑于: 2026/6/24 23:41:22 贡献者: Percygu , Your Name , gupeng 上一页 10. Go语言循环 下一页 12. Go语言函数

11. Go语言指针
https://clxhxhhr.top/posts/3623/
作者
clxstart
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。