go从0到1项目实战体系十三:全局/局部变量

1. 全局/局部变量:

. 全局变量:a. C和Go语言中,定义在函数外面的就是全局变量.. 局部变量:a. C和Go语言中,写在{}中、函数中、函数的形参,就是局部变量.b. 只能在{}里面有效.

2. 作用域:

. 全局变量:a. C语言中,全局变量的作用域是从定义的那一行开始,直到文件末尾为止.b. Go语言中的只要定义了全局变量,在定义前、后都可以使用.c. 全局变量在任何地方都可以进行使用.d. main包里定义的全局变量别的包是无法引用的.. 局部变量:a. C和Go语言中,局部变量的作用域是,从定义的那一行开始,直到}结束或遇到return为止.b. 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放.c. 不同的作用域,允许定义同名的变量.d. 使用变量的原则为就近原则,如果局部变量没有,就去全局变量中找.

3. 生命周期:

. 全局变量:a. C和Go语言中,只要程序一启动就会分配存储空间,只有程序关闭才会释放存储空间.b. C语言的全局变量存储在静态区(数据区). 局部变量:a. C和Go语言中,局部变量只有执行了才会分配存储空间,只要离开作用域就会自动释放.b. C语言的局部变量存储在栈区.

4. 注意点:

. 全局变量:a.C语言中相同的作用域内,可以出现同名的全局变量.b. 在Go语言中相同的作用域内,不能出现同名的全局变量.. 局部变量:a.C语言中相同的作用域内,不能出现同名的局部变量.b. Go语言中相同干的作用域内,不能出现同名的局部变量.

5. 特殊点:

.C语言中局部变量没有初始化存储的是垃圾数据,在Go语言中局部变量没有初始化,会默认初始化为0.. C和Go语言中,全局变量没有初始化存储的是0.a. Go语言有零值的概念.. 在Go语言中,定义了没有使用:a. 如果定义了一个局部变量,但是没有使用,编译会报错.b. 如果定义了一个全局变量,但是没有使用,编译不会报错.

6. 总结:

. 相同的作用域内,无论是全局变量还是局部变量,都不能出现同名的变量.. 变量离开作用域就不能使用.. 局部变量如果没有使用, 编译会报错, 全局变量如果没有使用, 编译不会报错.. :=只能用于局部变量, 不能用于全局变量.

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

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

相关文章

体验一下 CodeGPT 插件

体验一下 CodeGPT 插件 0. 背景1. CodeGPT 插件安装2. CodeGPT 插件基本配置3. (可选)CodeGPT 插件预制提示词原始配置(英文)4. CodeGPT 插件预制提示词配置(中文)5. 简单验证一下 0. 背景 看到B站Up主 “wwwzhouhui” 一个关于 CodeGPT 的视频,感觉挺有意思&#…

SpringMVC:整合 SSM 中篇

文章目录 SpringMVC - 04整合 SSM 中篇一、优化二、总结三、说明注意: SpringMVC - 04 整合 SSM 中篇 一、优化 在 spring-dao.xml 中配置 dao 接口扫描,可以动态地实现 dao 接口注入到 Spring 容器中。 优化前:手动创建 SqlSessionTempl…

HarmonyOS和OpenHarmony的区别

1.概要 众所周知,鸿蒙是华为开发的一款分布式操作系统。因为开发系统,最重要的是集思广益,大家共同维护。为了在IOS和Android之间生存,鸿蒙的茁壮成长一定是需要开源,各方助力才能实现。   在这种思想上,…

STM32实现三个小灯亮

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…

登录shell与非登录shell、交互式与非交互式shell的知识点详细总结

一、登录shell与非登录shell 1.登录shell定义:指的是当用户登录系统时所取的那个shell,登录shell属于交互式shell。 登陆shell通常指的是:用户通过输入用户名/密码(或证书认证)后启动的shell.例如: 当时…

【docker笔记】docker常用命令

1、帮助启动类命令 1.1 启动、重启、查询当前状态、停止 systemctl start docker systemctl stop docker systemctl restart docker systemctl status docker1.2 设置开机启动 systemctl enable docker1.3 查看docker概要信息 docker info1.4 查看docker帮助文档 docker -…

python的故事

当Python这门编程语言诞生于上世纪90年代末的时候,很少有人能够预见到它将成为如今广受欢迎的一门语言。然而,正是由于其简洁、易读、强大的特性,以及活跃的开发社区,Python逐渐崭露头角,取得了长足的发展。 故事的开…

spring-validation实现分组校验

文章目录 前言实际开发可能会使用到分组校验maven添加依赖简单使用高级应用分组自定义分组组合分组 源码地址 前言 JSR 303中提出了Bean Validation,表示JavaBean的校验,Hibernate Validation是其具体实现,并对其进行了一些扩展,…

GO语言基础笔记(一):基本语法与数据类型

基本语法 变量声明: 使用 var 关键字,如 var x int 声明一个整型变量 x。简短声明方式,如 y : 0 直接初始化 y。 函数定义: 使用 func 关键字定义函数,如 func add(a int, b int) int { return a b }。 控制结构&…

Arduino上U8g2库显示中文的经历

u8g2自带很多中文库&#xff1b;但是向u8g2_font_wqy12_t_chinese3 比较全的应该是u8g2_font_wqy12_t_gb2312 这个&#xff0c;只是我还没有调用成功 这个库&#xff0c;中文就显示不全&#xff1b;有些没有定义&#xff0c;如百家姓 #include <Arduino.h> #include <…

Java经典框架之Spring

Java经典框架之Spring Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Spring简介 2.…

HA启动Advanced SSH Web Terminal 提示附加组件似乎尚未准备就绪,它可能仍在启动。是否要再试一次?

环境&#xff1a; Home Assistant OS11.1 Advanced SSH & Web Terminal 17.0 问题描述&#xff1a; HA安装好SSH加载项&#xff0c;启动Advanced SSH & Web Terminal 提示附加组件似乎尚未准备就绪&#xff0c;它可能仍在启动。是否要再试一次&#xff1f; 解决方案…

设计模式之-策略模式,快速掌握策略模式,通俗易懂的讲解策略模式以及它的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

.NET中的Swagger使用

目录 前言 一、Swagger是什么&#xff1f; 二、如何Swagger文档说明的信息 1.在AddSwaggerGen方法中写入文档信息 2.运行效果 二、文档UI界面标题、路由设置 1.在中间件UseSwaggerUI方法中配置 三、文档UI界面添加接口注释 1.在 .csproj中配置 2.在AddSwaggerGen方法中配置Incl…

Apache Spark简介与历史发展

在当今信息爆炸的时代&#xff0c;大数据处理已成为了现实。企业和组织需要处理海量数据来获得有用的信息和见解。Apache Spark作为一个开源的大数据处理框架&#xff0c;已经在大数据领域占据了重要地位。 Apache Spark简介 Apache Spark是一个用于大规模数据处理的快速、通…

【zookeeper特点】

文章目录 1. Zookeeper介绍2、ZooKeeper数据结构 1. Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分 布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性 …

java8 reduce操作

什么是 reduce 操作 reduce 操作是一种通用的归约操作&#xff0c;它可以从一个元素序列中生成一个单一的结果&#xff0c;通过反复将一个组合操作应用到序列中的元素上。例如&#xff0c;我们可以使用 reduce 操作来计算一个整数序列的和&#xff0c;或者将一个字符串序列拼接…

EventSource和WebSocket

eventSource&#xff08;事件源&#xff09;和WebSocket都是用于实现服务器与客户端之间的实时通信的技术&#xff0c;但它们在一些方面有所不同。 eventSource eventSource是HTML5中的一种技术&#xff0c;它允许服务器向客户端发送单向的、持久的、自动的消息。它基于HTTP协…

新版IDEA中Git的使用(一)

说明&#xff1a;本文介绍如何在新版IDEA中使用Git 创建项目 首先&#xff0c;在GitLab里面创建一个项目&#xff08;git_demo&#xff09;&#xff0c;克隆到桌面上。 然后在IDEA中创建一个项目&#xff0c;项目路径放在这个Git文件夹里面。 Git界面 当前分支&Commit …

GO语言基础笔记(五):包的介绍

在Go语言中&#xff0c;包&#xff08;package&#xff09;是代码组织和重用的基本单位。Go的标准库中包含了许多实用的包&#xff0c;它们提供了从基础数据处理到复杂网络编程等各种功能。下面是一些常用的Go标准库包及其作用的介绍&#xff1a; 目录 1. fmt 2. net/http …