Go语言--延迟调用defer、获取命令行参数、局部变量以及全局变量

延迟调用defer

关键字 defer 用于延迟一个函数或者方法(或者当前所创建的匿名函数)的执行。注意,defer语句只能出现在函数或方法的内部。
在这里插入图片描述

defer 语句经常被用于处理成对的操作,如打开、关闭、连接、断开连接、加锁、释放锁。通过defer 机制,不论函数逻辑多复杂,都能保证在任何执行路径下,资源被释放。释放资源的 defer应该直接跟在请求资源的语句后。

在这里插入图片描述

多个defer的执行顺序

如果一个函数中有多个 defer 语句,它们会以LIFO(后进先出)的顺序执行。哪怕函数或某个延迟调用发生错误,这些调用依旧会被执行。
在这里插入图片描述

  • 正常情况下,程序崩溃,下面的程序将不会被执行。
    在这里插入图片描述
    在这里插入图片描述

defer和匿名函数结合使用

在这里插入图片描述

注意,defer已经进行了传参,只是没有调用。

defer func(a, b int) {fmt.Printf("a=%d,b=%d\n", a, b)
}(a, b)

相当于,提前已经把a,b的值传入,只有等到mian函数结束前才进行调用。

defer func(a, b int) {fmt.Printf("a=%d,b=%d\n", a, b)
}(10,20)

在这里插入图片描述

获取命令行参数

接收用户传递的参数,都是以字符串方式传递。
在这里插入图片描述

局部变量

  • 定义在{}里画的变量就是局部变量,只能在{}里面有效。

在这里插入图片描述
在这里插入图片描述

  • 执行到定义变量那句话,才开始分配空间,离开作用域自动释放。

全局变量

定义在函数外部的变量是全局变量,在任何地方都可以使用。

在这里插入图片描述

  • 不同作用域,允许定义同名变量,使用变量的原则为就近原则。
    在这里插入图片描述

在这里插入图片描述

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

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

相关文章

NASA——quarius(水瓶座) L3 网格化 1 度年土壤湿度,第 5 版

Aquarius L3 Gridded 1-Degree Annual Soil Moisture V005 水瓶座 L3 网格化 1 度年土壤湿度,第 5 版 简介 该数据集包含美国国家航空航天局(NASA)科学应用卫星(SAC-D)上的宝瓶座被动微波辐射计得出的第 3 级网格化…

SLAM 精度评估

SLAM 精度的评估有两个最重要的指标,即绝对轨迹误差(ATE)和相对位姿误差(RPE)的 均方根误差(RMSE): 绝对轨迹误差:直接计算相机位姿的真实值与 SLAM 系统的估计值之间的差值,首先将…

交换机基本原理

文章目录 前言一、交换机的转发行为二、交换机的转发原理1.MAC地址表2.交换机初始状态3.学习MAC地址4.ARP协议5.交换机转发数据帧6.目标主机回复 三、华为交换机基本命令1.VRP视图分层2.命令行补全3.命令行帮助4.配置设备名称5.命令等级6.用户界面7.配置console认证8.配置用户界…

python-Django项目:图书后台管理系统

具体操作:请参考 Django项目:图书后台管理系统

基于深度学习的图像补全

基于深度学习的图像补全是一项利用深度学习技术来填补图像中缺失区域的研究领域。这项技术可以有效地恢复损坏或不完整的图像,使其变得完整和自然,广泛应用于图像修复、图像编辑、视频恢复和增强现实等领域。以下是关于这一领域的系统介绍: …

运维锅总详解计算机缓存

本文从OSI模型中的每一层缓存介绍、常见开源中间件缓存举例、TCP/IP协议栈中的缓存机制、操作系统中的缓存、访问缓存数据的时间范围统计等方面对计算机中的缓存进行详细介绍。希望对您有所帮助! 一、OSI模型中的每一层缓存 1. 物理层(Physical Layer&…

Unity--异步加载场景

Unity–异步加载场景 异步加载场景其实和异步加载资源是一样的,只是加载的内容比较特殊而已. 也可以将场景视为特殊资源. 1.SceneManager.LoadScene 加载场景的方式,在Unity 中加载场景是通过SceneManager.LoadScene("场景名称"); 来实现加载场景,这和UE4中的Open…

如何在Java中实现批量数据处理

如何在Java中实现批量数据处理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在大数据时代,处理大量数据是许多应用程序中必不可少的需…

自动化立体仓库出入库能力及堆垛机节拍

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载 自动化立体仓库的出入库能力、堆垛机节拍以…

安全协议:SSL/TLS与Java实现

在当今的互联网环境中,数据安全至关重要。SSL(Secure Sockets Layer)和其继任者TLS(Transport Layer Security)是确保数据在网络中安全传输的关键技术。本文将详细介绍SSL/TLS协议的工作原理,并通过Java代码…

掌握电路交换与分组交换:计算机网络的核心技术

计算机网络是现代信息社会的基石,而交换技术是实现网络通信的核心。本文将详细介绍两种典型的交换方式:电路交换和分组交换,帮助基础小白快速掌握这两种技术的基本概念和区别。 什么是电路交换? 电路交换(Circuit Swi…

Java中的服务化架构设计与实现

Java中的服务化架构设计与实现 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 随着软件系统规模的不断扩大和业务需求的增加,传统的单体…

CentOS7开启sshd失败解决方法

Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_ecdsa_key Could not load host key: /etc/ssh/ssh_host_ed25519_key sshd: no hostkeys available – exiting. 1、检查主机密钥文件是否存在 ls -l /etc/ssh/ssh_host_*2、…

Centos系统迁移

目前,CentOS 全系列版本已经于l六月底正式停止维护,这意味着 CentOS 时代彻底终结,也意味着部署在 CentOS 7 上的业务系统将面临前所未有的安全挑战。 本文推荐由红帽衍生出来的且可以做到真正无缝替代的linux版本Open Euler 注&#xff1a…

【前端】面试八股文——输入URL到页面展示的过程

【前端】面试八股文——输入URL到页面展示的过程 1. DNS解析 当用户在浏览器中输入URL并按下回车时,首先需要将域名转换为IP地址,这个过程称为DNS(域名系统)解析。具体步骤如下: 浏览器缓存:浏览器首先检…

科普文:Linux服务器性能调优概叙

概叙 Java web应用性能分析之服务端慢和优化概叙_cpu飙高java-CSDN博客 Java web应用性能分析之【CPU飙升分析概述】_web页面性能分析cpu占满是因为死循环,还是循环过多-CSDN博客 在我们的软件服务中,软件部署的服务器,一般都是linux服务器&#xff0c…

ubuntu20.04安装lio-sam

1、boost版本 boost版本查看:cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION" boost版本为1.78,为1.71时编译报错,报错内容为: error: missing binary operator before token "(" 60 |…

面向txt/json/xlsx/csv的文件读写及编码问题

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友,旨在利用实际代码案例和通俗化文字说明,使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强调的是,专栏仅介绍主…

每日一道算法题 彩灯装饰记录 I

题目 LCR 149. 彩灯装饰记录 I - 力扣(LeetCode) Python # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right …