【Go】go语言指针

指针基本概念

指针定义:指针是存储变量内存地址的变量
通过这句话我们可以了解到,指针也是一个变量,它有自己的地址,它的值为其它的变量的内存地址。

声明方式:var p *int (声明一个指向int类型的指针)

操作符:

&:获取变量的地址,例如 p = &a

*:解引用指针,获取指针指向的值,例如 *p = 10

package mainimport "fmt"// 此处开始编写代码
func main() {var a int = 100var p *intp = &afmt.Printf("a变量的地址是:%x\n", &a)fmt.Printf("p的值是:%x\n", p)fmt.Printf("p的地址是:%x\n", &p)fmt.Println("a的值为:", a)//通过指针访问值fmt.Println("解引用指针p得到a值为:", *p)//通过指针修改值*p = 500fmt.Println("a的值为:", a)fmt.Println("解引用指针p得到a值为:", *p)
}
/*
a变量的地址是:c0000a6058
p的值是:c0000a6058
p的地址是:c0000ca018
a的值为: 100
解引用指针p得到a值为: 100
a的值为: 500
解引用指针p得到a值为: 500
*/

空指针nil

空指针:未初始化的指针值为nil,解引用会触发panic。
当一个指针被定义之后,没有分配任何变量,那么它的值就是nil
nil在概念上和其它语言null、None都是一样的,指零值或空值。

package mainimport "fmt"// 此处开始编写代码
func main() {var ptr *intif ptr == nil {fmt.Println("ptr为空指针")//fmt.Println("ptr:", *ptr) panic: runtime error: invalid memory address or nil pointer dereference//避免空指针解引用:使用前检查是否为nil。}
}

Go语言指针的限制

go语言的指针不能参与运算
不同类型的指针不允许相互转换
不同类型的指针不能比较和相互赋值

但是go语言提供了绕过这些限制的方法:unsafe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35180.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器好用的去广告插件和暗黑模式护眼插件

提升浏览体验:Edge浏览器的Adblock和Dark Mode扩展 Adblock:告别广告干扰 功能:高效拦截弹窗、横幅和视频广告,提升网页整洁度,加快加载速度,节省流量。安装链接:安装Adblock Dark Mode for E…

MySQL-基础篇

从数据库的基础的概念特性到数据库当中的SQL语句,再到数据库当中的存储引擎、索引优化以及分库分表、数据库的集群,甚至于数据库的底层原理 MySQL概述SQL函数约束多表查询事务 这块由于上学期学过一些就速过。 MySQL概述 通过SQL就可以操作数据库管理…

fastapi+angular外卖系统

说明: fastapiangular外卖系统 1.美食分类(粥,粉,面,炸鸡,炒菜,西餐,奶茶等等) 2.商家列表 (kfc,兰州拉面,湘菜馆,早餐店…

2025高频面试算法总结篇【递归回溯动态规划】

文章目录 递归&回溯131. 分割回文串面试题 08.12. 八皇后 动态规划72编辑距离5. 最长回文子串279. 完全平方数300. 最长递增子序列139. 单词拆分 递归&回溯 131. 分割回文串 回溯思路: 临界条件: if (start s.length) > 保存 循环遍历这个…

Ubuntu docker安装milvusdb

一、安装docker 1.更新软件包 sudo apt update sudo apt upgrade sudo apt-get install docker-ce docker-ce-cli containerd.io查看是否安装成功 docker -v二、使用国内的镜像下载 milvusdb Docker中国区官方镜像: https://registry.docker-cn.com milvusdb/milvus - Doc…

Redis如何实现持久化

Redis如何实现持久化 Redis默认将所有数据存储在内存中,虽然读写效率极高,但存在两大风险 数据易失性:进程重启或服务器宕机导致内存数据丢失。恢复成本高:无法直接通过内存重建大规模数据集。 Redis作为高性能的键值数据库&…

DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)

🌟引言: DeepSeek作为国产AI大模型,以强大的逻辑推理和结构化内容生成能力著称,擅长根据用户需求生成PPT大纲或Markdown文本;Kimi的PPT助手则能解析结构化内容并套用模板快速生成美观的PPT,两者结合实现“内…

查看分析日志文件、root密码不记得了,那应该怎么解决这些问题

下面我来讲解一下概念以及应该怎么做: 查看分析日志文件 一、主要日志文件 ♣ 内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件 /etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序信息记录到什么位置。系统中…

mac电脑如何将wps接入deepseek (傻瓜式教学)

我的是mac pro m4 pro版本,版本不同页面或许有些许差异 首先将wps更新到最新的版本,并打开,点击 + 号 新建一个word文档 点击空白文档 点击开发工具,如果没有开发工具,可以先点击工具,在里面找到开发工具,然后点击宏安全性,设置为低,如下图所示

SpringMVC(五)拦截器

目录 拦截器基本概念 一 单个拦截器的执行 1 创建拦截器 2 SpringMVC配置,并指定拦截路径。 3 运行结果展示: 二 多个拦截器的执行顺序 三 拦截器与过滤器的区别 拦截器基本概念 SpringMVC内置拦截器机制,允许在请求被目标方法处理的…

3.17[A]CV

在计算机图形学中,反走样(Antialiasing) 是一种用于减少图像中锯齿状边缘(aliasing artifacts)的技术。当绘制曲线或图形时,由于像素的离散性,曲线边缘可能会出现锯齿状的失真。反走样通过考虑曲…

集成学习(上):Bagging集成方法

一、什么是集成学习? 在机器学习的世界里,没有哪个模型是完美无缺的。就像古希腊神话中的"盲人摸象",单个模型往往只能捕捉到数据特征的某个侧面。但当我们把多个模型的智慧集合起来,就能像拼图一样还原出完整的真相&a…

【LangChain】理论及应用实战(5):Agent

文章目录 一、基本介绍1.1 Agent介绍1.2 Agent示例 二、几种主要的Agent类型2.1 ZERO_SHOT_REACT_DESCRIPTION2.2 CHAT_ZERO_SHOT_REACT_DESCRIPTION2.3 CONVERSATIONAL_REACT_DESCRIPTION2.4 CHAT_CONVERSATIONAL_REACT_DESCRIPTION2.5 OPENAI_FUNCTIONS 三、给Agent增加Memor…

口袋书签系统:AI 智能生成分类描述,省时又高效

口袋书签一键触达,免费使用:https://navfinder.cn/ 口袋书签系统新增了“根据收藏站点,AI自动生成分类描述”的功能,简要说明如下: 自动分析站点信息 系统会根据用户当前分类中的站点标题、标签等信息,结合…

AtCoder Beginner Contest 397 A - D题解

Tasks - OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397) 本文为 AtCoder Beginner Contest 397 A - D题解 题目A: 代码(C): #include <bits/stdc.h>int main() {double n;std::cin >> n;if (n > 38.0) {std::cout << 1;}…

linux按照nginx

第一步先按照依赖gcc 一键安装上面四个依赖 Nginx的编译安装需要一些依赖库&#xff0c;如gcc、make、zlib、openssl等。可以使用yum命令安装这些依赖&#xff1a; yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 创建目录 mkdir /usr/nginx 切换…

Muon: An optimizer for hidden layers in neural networks

引言 在深度学习领域&#xff0c;优化算法对模型训练效率和性能起着关键作用。从经典的随机梯度下降 (SGD) 及其动量法&#xff0c;到自适应优化方法 Adam/AdamW 等&#xff0c;一系列优化器大大加速了神经网络的收敛。然而&#xff0c;随着模型规模和数据量的爆炸式增长&…

数据结构与算法-图论-拓扑排序

前置芝士 概念 拓扑排序&#xff08;Topological Sorting&#xff09;是对有向无环图&#xff08;DAG&#xff0c;Directed Acyclic Graph&#xff09;的顶点进行排序的一种算法。它将图中的所有顶点排成一个线性序列&#xff0c;使得对于图中的任意一条有向边 (u, v)&#x…

市长海报/ Mayor‘s posters

AB 省 Bytetown 的市民无法忍受市长竞选活动的候选人随心所欲地将他们的选举海报贴在各个地方。市议会最终决定建造一面选举墙来放置海报&#xff0c;并引入以下规则&#xff1a; 每个候选人都可以在墙上放置一张海报。所有海报的高度都与墙壁的高度相同;海报的宽度可以是任意整…

LeetCode hot 100—验证二叉搜索树

题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 示例 1&#…