04【保姆级】-GO语言指针

之前我学过C、Java、Python语言时总结的经验:

  1. 先建立整体框架,然后再去抠细节。
  2. 先Know how,然后know why。
  3. 先做出来,然后再去一点点研究,才会事半功倍。
  4. 适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。
  5. 对于GO语言,切记遵守语法格式规则。(例如python语言、例如SpringBoot框架等)
    解释:某些知识点,就是很难了解,那么先做出来,然后继续向前学习,可能在某个时间点我们就会恍然大悟。

04【保姆级】-GO语言指针

  • 一、指针的概念
    • 1.1 基本数据类型 && 指针类型
    • 1.2 指针的详细讲解
      • 指针内存图
      • 练习题
  • 二、 值类型和引用类型【面试题】
    • 2.1 值类型
    • 2.2 引用类型
    • 2.3值类型和引用类型的使用特点

一、指针的概念

1.1 基本数据类型 && 指针类型

  1. 基本数据类型,变量存的就是值,也就是值类型。
  2. 而指针类型,指针变量存的是一个地址,这个地址对应的空间存的是值。例如:【var ptr *int = &num】

1.2 指针的详细讲解

  1. 获取变量的地址,用&,比如:【var num int】 ,其中获取num的地址是:【&num】
  2. 获取指针类型所指向的值,使用【*】,比如【var ptr *int】,使用【*ptr】获取ptr指向的值。
	// 基本数据类型:
	var num int = 100
	fmt.Println("num =", num) 		//  num = 100

	// 指针类型:
	var ptr *int = &num
	fmt.Println("num的地址是:", &num)  //  num的地址是: 0xc04205a080
	fmt.Println("ptr存储的是num的地址:", ptr)  //  ptr存储的是num的地址: 0xc04205a08
	fmt.Println("ptr指针指向的变量内容:", *ptr)  //  ptr指针指向的变量内容: 100


- 解释var ptr *int = *num
1. ptr 是一个指针变量
2. ptr 的类型是*int 
3. ptr 本身的值&num

指针内存图

在这里插入图片描述

练习题

  1. 第一个是错误的,因为不能将变量直接赋值给指针。正确的是将变量的内存地址赋值给指针。
  2. 第二个是错的。是因为类型不匹配。
  3. 第三个正确。前面a的值通过指针进行了更改,后面 指针指向了b。
    在这里插入图片描述

二、 值类型和引用类型【面试题】

2.1 值类型

  1. 值类型:都有对应的之类类型,形式为【*数据类型】,比如int的对应指针就是【*int】
  2. 值类型包括: 基本数据类型 int系列、float系列,bool,string,数组和结构体struct

2.2 引用类型

引用类型:指针、slice切片、map、管道chan、interface等

2.3值类型和引用类型的使用特点

  1. 值类型:变量直接存储值,内存通常在栈中分配。
    在这里插入图片描述

  2. 应用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(也就是值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成了一个垃圾,由GC来回收。
    在这里插入图片描述

  3. 内存的栈区和堆区示意图:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二蛋赠书七期:《云原生数据中台:架构、方法论与实践》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)续

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 之前生产的xml,在bpmn设计里编辑有些内容不正确,包括审批人,关联表单等…

【蓝桥杯选拔赛真题13】C++最短距离 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

C/C++最短距离 第十二届青少组蓝桥杯C++选拔赛真题 一、题目要求 1、编程实现 有一个居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3……,当排满一行时,从下一行相邻的楼往反方向排号。 例如:小区为 3 行 6 列,矩阵排列方式: 要求:已知小区…

vue:如何实现通过判断数组中每个对象的其中一个属性,从而更改另一个属性的值

1、假设一个box为一个包含多个对象的数组,这个box数组可以在方法中定义也可以在data域中定义 let box [{ id: 1, status: 审批中 },{ id: 2, status: 已通过 },{ id: 3, status: 未通过 } ];2、在methods域中写一个方法遍历这个box数组判断每个对象中的status属性是…

Linux 服务器监控

服务器几乎与任何 IT 基础设施密不可分,Linux 是服务器兼容性最强的开源操作系统,因为它具有灵活性、一致性和安全性。大多数 Linux 服务器都设置了以下 Linux 操作系统的任何变体:Red Hat Enterprise Linux (RHEL)、D…

clickhouse安装与远程访问

安装(本文以ubuntu系统为例) 单节点设置​ 为了延迟演示分布式环境的复杂性,我们将首先在单个服务器或虚拟机上部署ClickHouse。ClickHouse通常是从deb或rpm包安装,但对于不支持它们的操作系统也有其他方法。 例如,…

Markdown写作应用推荐

MWeb Pro 是一款适用于macOS的专业Markdown写作、笔记本应用软件。喜欢写博客的朋友,那你一定会需要 MWeb Pro 这款软件。为您提供最佳的写作体验。 Markdown 语法支持: 使用 Github Flavored Markdown 语法,简称 GFM 语法。支持表格、TOC、…

吴恩达《机器学习》6-4->6-7:代价函数、简化代价函数与梯度下降、高级优化、多元分类:一对多

一、代价函数 逻辑回归的代价函数是用来度量模型预测与实际结果之间的差异的。与线性回归使用均方误差不同,逻辑回归使用的代价函数在数学上更为复杂。为了理解逻辑回归的代价函数,首先要明白逻辑回归的假设函数: ℎ𝜃(&#x1…

消息代理与事件代理:何时使用它们

选择正确的工具来满足异步处理需求的技术指南 作为后端开发人员,有一天你需要回答这个问题: 我需要构建一个使用分布式队列的异步应用程序,我应该使用哪个代理? 作为工程师,我们的本能是列出我们了解或希望熟悉的工具&…

汇编-变量

.386 .model flat,stdcall option casemap:none.data sum DWORD 0 ;创建一个全局变量,取名sum,初始化0 sum1 DWORD ? ;创建一个全局变量sum1,无初始化 ;问号(?)初始化值使得变量未被初始化,这意味着在运行时才会为该变量分配一个值 ;变量名…

【Git】Git 学习笔记_操作远程仓库

1. SSH 配置和克隆仓库 ssh-keygen -t rsa -C "xxxqq.com"回车后出现以下内容,直接回车: Generating public/private rsa key pair. Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa): (按回车键) Enter pass…

指针进阶(3)

文章目录 9. 指针和数组笔试题解析10. 指针笔试题 9. 指针和数组笔试题解析 在做题之前,我们再次明确一下数组名的理解: 数组名是数组首元素的地址,但是有2个例外: sizeof(数组名),这里的数组名表示整个数组&#xff…

[黑马程序员Pandas教程]——Pandas数据结构

目录: 学习目标认识Pandas中的数据结构和数据类型Series对象通过numpy.ndarray数组来创建通过list列表来创建使用字典或元组创建s对象在notebook中不写printSeries对象常用API布尔值列表获取Series对象中部分数据Series对象的运算DataFrame对象创建df对象DataFrame…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU(Rectified Linear Unit)是一种常用的神经网络激活函数,它在PyTorch中被广泛使用。ReLU函数接受一个输入值,如果该值大于零,则返回该…

python的format函数的用法及实例

目录 1.format函数的语法及用法 (1)语法:{}.format() (2)用法:用于格式化字符串。可以接受无限个参数,可以指定顺序。返回结果为字符串。 2.实例 (1)不设置位置&…

浮点数存储

//浮点数存储 int main() {int n 9;//00000000 00000000 00000000 00001001//0 00000000 00000000000000000001001//S E(8bit) M(23bit)//E-126//M0.000000000000000000001001// 0.000000000000000000001001 *2^-126float* pFloat (float*)&n;printf("n的值…

挖掘非结构化数据潜能——向量数据库的探索之路

“ 摸着石头过河,一直向前,不断尝试 ” 整理 | 小白 出品|极新 IDC 预测,到 2025 年,中国的数据量将增长到 48.6ZB,80% 是非结构化数据,并且将成为全球最大的数据圈。在我们的日常生活中&…

python使用pysqlcipher3对sqlite数据库进行加密

python对很多项目都需要对sqlite数据库的数据进行加密,最流行的加密方式是使用pysqlcipher3,当前使用的python版本为3.7,本博文是直接使用pysqlcipher3在项目上的应用,使用的是已编译好的pysqlcipher3包,如果你需要pys…

Jmeter_逻辑控制器

逻辑控制器 控制取样器执行顺序的组件实现(分支 循环) 分类 1、如果(if) 控制器 分支实现 2、forEach控制器 循环往复实现 3、循环控制器 循环往复实现 如果(if) 控制器 需求1:测试计划中定义一个 http 请求访问百度,但是该请求不是无条件执行的,…

【uniapp小程序下载】调用uni.uploadfile方法在调试工具里是没有问题的,但是线上版本和体验版就调用不成功,真机调试也没问题

把你的下载地址前缀添加到合法域名就解决了 在调试工具里成功了是因为勾选了下面这项 下面是我的下载并打开函数 methods: {// 下载downloadFileFn(data) {if (this.detailsObj.currentUserBuy) {uni.downloadFile({// data是路径url: https:// data,success(res) {//保存到本…