【gogogo专栏】指针

news2024/11/25 0:50:14

go语言指针

  • 为什么需要指针
  • 指针使用实例
    • 值传递
    • 地址传递
    • 多级指针

为什么需要指针

作为一个大学划水,毕业一直写java的程序员来说,多多少少对于指针有点陌生,由于近期需要转go,正好学到指针这里,就来探究下指针的使用场景和用法吧。

首先我们来看下以下这个简单的例子,主方法通过形参将a传递进方法changeValue,然后这个方法将值改变了,那么主方法得到的值是否会改变呢?

import "fmt"

/**
指针专题
*/

func changeValue(p int) {
	p = 10
}

func main() {
	var a = 1
	changeValue(a)
	fmt.Println("a = ", a)
}

运行后我们发现打印的a的值为1,a并没有因为changeValue这个方法而改变。
究其原因是因为我们调用方法的时候是通过值传递的,而非地址传递,它的模型如下:
在这里插入图片描述
因为两个值存在于不同的地址中,所以值没有改变,为了使上述方法能让值得到修改,我们需要通过指针传入地址来让修改的变量值在当前地址中进行修改。

package main

import "fmt"

/**
指针专题
*/

func changeValue(p *int) {
	*p = 10
}

func main() {
	var a = 1
	changeValue(&a)
	fmt.Println("a = ", a)
}

因此使用指针过后,修改的为地址的值
在这里插入图片描述

指针使用实例

值传递

func swap(a int, b int) {
	var temp int
	temp = a
	a = b
	b = temp
}

func main() {
	var a = 10
	var b = 20
	swap(a, b)
	fmt.Println("a=", a, "b=", b)
}

最终a=10 b=20,值并没有改变

地址传递

func swap(pa *int, pb *int) {
	var temp int
	temp = *pa
	*pa = *pb
	*pb = temp
}

func main() {
	var a = 10
	var b = 20
	swap(&a, &b)
	fmt.Println("a=", a, "b=", b)
}

最终a=20 b=10,通过地址传递改变了原来的值

多级指针

指向指针的指针称为多级指针

func main() {
	a := 0
	//一级指针
	var p *int
	p = &a
	fmt.Println(&a)
	fmt.Println(p)
	//二级指针
	var pp **int
	pp = &p
	fmt.Println(&p)
	fmt.Println(pp)
}

打印结果如下

0x1400000e078
0x1400000e078
0x14000046020
0x14000046020

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot 数据库版本管理升级常用解决方案

目录 一、前言 1.1 单独执行初始化sql 1.2 程序自动执行 二、数据库版本升级管理问题 三、spring 框架sql自动管理机制 3.1 jdbcTemplate 方式 3.1.1 创建数据库 3.1.2 创建 springboot 工程 3.1.3 初始化sql脚本 3.1.4 核心配置类 3.1.5 执行sql初始化 3.2 配置文…

Baklib:企业Wiki 知识库管理有序更高效

什么是Baklib? Baklib是一种企业Wiki知识库管理工具,旨在帮助企业更好地管理和共享知识。它提供了一个集中存储和组织知识的平台,使团队成员可以轻松地查找和共享信息。Baklib具有直观的用户界面和强大的搜索功能,可以提高团队的工作效率和…

leetcode 516. 最长回文子序列(JAVA)题解

题目链接https://leetcode.cn/problems/longest-palindromic-subsequence/description/?utm_sourceLCUS&utm_mediumip_redirect&utm_campaigntransfer2china 目录 题目描述: 暴力递归: 动态规划: 题目描述: 给你一个…

第06天 静态代理和动态代理

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

运维监控学习笔记7

Zabbix的安装: 1、基础环境准备: 安装zabbix的yum源,阿里的yum源提供了zabbix3.0。 rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm 这个文件就是生成了一个zabbix.repo 2、安…

海量数据迁移,亚马逊云科技云数据库服务为大库治理提供新思路

1.背景 目前,文档型数据库由于灵活的schema和接近关系型数据库的访问特点,被广泛应用,尤其是游戏、互联网金融等行业的客户使用MongoDB构建了大量应用程序,比如游戏客户用来处理玩家的属性信息;又如股票APP用来存储与时…

ESP 系列的产品 ULP 协处理器的应用

参考文档: 《ESP32-S2 技术参考手册》 中 “1. 超低功耗协处理器 (ULP)” 章节《ESP32-S3 技术参考手册》 中 “2 超低功耗协处理器 (ULPFSM, ULPRISCV)” 章节《ESP32-C6 技术参考手册》 中 “3 低功耗处理器” 章节ULP 协处理器编程ULP RISC-V 协处理器编程Progr…

leetcode2024. 考试的最大困扰度(java)

考试的最大困扰度 leetcode2024. 考试的最大困扰度题目描述滑动窗口最大值 经典算法 leetcode2024. 考试的最大困扰度 难度 - 中等 原题链接 - 考试的最大困扰度 题目描述 一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示…

程序设计 堆

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

代码随想录算法训练营第三十四天 | 1005.K次取反后最大化的数组和,134. 加油站 ,135. 分发糖果

代码随想录算法训练营第三十四天 | 1005.K次取反后最大化的数组和,134. 加油站 ,135. 分发糖果 1005.K次取反后最大化的数组和:eyes:题目总结:eyes: 134. 加油站暴力方法贪心算法(方法一)贪心算法(方法二):…

Stable Diffusion+Temporal-kit 半虚半实应用

1.先下载temporal-kit,重启webui 2.下载好ffmpeg,配置好环境,下载Ebsynth 3.准备好你需要的视频,拖到预处理视频位置 4.填写参数,点解保存设置,然后并点击生成,会生成到目标文件夹的input位置 5.然后拉出input文件夹里面你想切换成处理的帧图片,然后填写prompt查看效…

分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

文章目录 1. 正向代理和反向代理2. 配置代理服务3. proxy_pass 命令解析4. 设置代理请求headers 1. 正向代理和反向代理 正向代理是客户端通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器…

将会计转移到 cloud:远程访问软件的作用

在不断变化的金融和技术格局中,会计行业经历了重大演变。账簿和人工计算在金融界占据主导地位的日子已经一去不复返了。如今,随着企业寻求更高效、更准确、更具协作性的财务管理方式,数字化转变比以往任何时候都更加明显。我们正处于会计复兴…

C# Linq源码分析之Take (一)

概要 在.Net 6 中引入的Take的另一个重载方法,一个基于Range的重载方法。因为该方法中涉及了很多新的概念,所以在分析源码之前,先将这些概念搞清楚。 Take方法基本介绍 public static System.Collections.Generic.IEnumerable Take (this …

jeecgboot table 单元格横向和纵向合并

customRender: (value, row, index) > {const obj {children: ¥200200火力值,attrs: {}}if (index 0) {// obj.attrs.rowSpan this.dataSource.length // 合并数量 纵向合并obj.attrs.colSpan 3 // 横向合并}if (index > 1) {// obj.attrs.rowSpan 0 // …

2023上半年京东手机行业品牌销售排行榜(京东数据平台)

后疫情时代,不少行业都迎来消费复苏,我国智能手机市场在今年上半年也实现温和的复苏,手机市场的出货量回暖。 根据鲸参谋平台的数据显示,2023年上半年,京东平台上手机的销量为2830万,环比增长约4%&#xf…

注解@ConfigurationProperties获取配置文件内容 (demo)

1. 自定义配置文件内容 2. ConfigurationProperties import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Data Component ConfigurationProperties(prefix"wx-pay.v3&qu…

从密码重置打到Getshell和其它漏洞打包

前言: 前几天是准备上点edusrc的分的所以就准备用手上还没刷的Nday继续上分,然后就有了今天这个案例: 信息收集: 之前在挖某体育学院证书的时候就挖到过一个通过修改html文件更改密码修改步骤的漏洞 所以就准备测绘一下这个资产…

dataset中图像处理提速小技巧

图像增广中,边缘填充颜色写元组还是写单一数值 一,写元组: self.border_fill_value 114, 114, 114 # 定义为元组# 仿射变换的时候的写法:merge_mosaic_image cv2.warpAffine(merge_mosaic_image, M, (self.image_size, self.…

【uniapp】微信小程序,取视频第一帧,前提是 图片是在 阿里云的oss上

上传视频等,默认为黑色,无法用视频的第一帧作为封面,以及视频的video为原生组件,层级很高无法覆盖问题,虽然有cover-view,但很多场景还是不灵活 实现的前提条件是 图片是在 阿里云的oss上 自己服务器是…