0

0

如何在 Go 中正确声明指针并传递给函数以修改其指向的值

聖光之護

聖光之護

发布时间:2026-01-07 17:28:02

|

998人浏览过

|

来源于php中文网

原创

如何在 Go 中正确声明指针并传递给函数以修改其指向的值

go 中不能直接声明未初始化的指针变量(如 `oneptr *int`),而应先声明普通变量,再用取地址符 `&` 获取其指针,然后传入函数;函数接收 `*t` 类型参数并通过解引用 `*ptr` 修改原值。

在 Go 中,指针是显式且安全的:你必须先拥有一个已定义的变量,再通过 &variable 获取其内存地址,从而得到一个指向该变量的指针。Go 不允许声明一个“悬空”或未绑定的指针(例如 var p *int 并不分配可安全解引用的底层存储),因为这会带来不确定性风险。

下面是一个完整、可运行的示例,演示如何正确定义整型变量、获取其指针、传入函数并修改原始值:

package main

import "fmt"

func zeroptr(ptr *int) {
    *ptr = 0 // 解引用并赋值,直接影响原始变量
}

func main() {
    var x int     // 声明一个普通 int 变量
    x = 1         // 初始化为 1
    fmt.Println("x is:", x) // 输出: x is: 1

    zeroptr(&x)   // 传入 x 的地址(*int 类型)
    fmt.Println("after calling zeroptr, x is:", x) // 输出: after calling zeroptr, x is: 0
}

⚠️ 注意事项:

OpenJobs AI
OpenJobs AI

AI驱动的职位搜索推荐平台

下载
  • &x 是取地址操作,类型为 *int;*ptr 是解引用操作,用于读写 ptr 所指向的值;
  • 错误写法 oneptr *int; *oneptr = 1 会导致 panic:invalid memory address or nil pointer dereference,因为 oneptr 是 nil 指针,未指向有效内存;
  • 若需动态分配内存,可用 new(T) 或 &T{},例如:p := new(int) 等价于 p := &int{0},此时 p 指向一个零值初始化的 int,可安全解引用。

总结:Go 的指针设计强调明确性与安全性——指针必须有明确的指向目标,修改指针所指内容即等价于修改原始变量本身。掌握 &(取地址)和 *(解引用)的配对使用,是理解 Go 内存模型与函数参数传递机制的关键基础。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

529

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

49

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

193

2025.08.29

java学习网站推荐汇总
java学习网站推荐汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.08

java学习网站汇总
java学习网站汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.01.08

正则表达式 删除
正则表达式 删除

本专题整合了正则表达式删除教程大全,阅读专题下面的文章了解更多详细教程。

20

2026.01.08

java 元空间 永久代
java 元空间 永久代

本专题整合了java中元空间和永久代的区别,阅读专题下面的文章了解更多详细内容。

3

2026.01.08

java 永久代和元空间
java 永久代和元空间

本专题整合了java中元空间和永久代的区别,阅读专题下面的文章了解更多详细内容。

0

2026.01.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.4万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号