【golang中的变量 全局/局部/4中声明】

news2024/11/20 18:21:25

目录

  • 变量
  • 变量的分析
  • 1.变量的创建的四种形式
    • 1.1总结
    • 1.2第一种 var a int 声明
    • 1.3 第二种 var a string = "XXXX" 初始化
    • 1.4第三种 var a = "XXXX"
    • 1.5第四种 a := XXXX
  • 2.一次性声明多个变量
  • 3.一次初始化多个变量
    • 3.1交换值
  • 4.全局变量--局部变量
  • 5. 声明和初始化的区别
  • 常见变量

变量

变量是计算机存储和操作数据的一种方式。可以把它想象成一个标记,类似于一个容器,在内存中存储某个值或数据,并可以对其进行读取、修改或删除等操作。

在编程中,声明一个变量就相当于创建了一个容器并给它赋予了一个名称,以便随时引用这个容器中的值或数据。这样可以方便地使用和管理数据,同时也避免了重复输入数据的麻烦。

例如,要存储一个人的姓名,可以创建一个名为“name”的变量,并将其赋值为该人的姓名,这样就可以在程序中随时调用这个变量来使用这个姓名,而不需要每次都重新输入。

总之,变量是计算机编程中的基本概念,帮助我们在程序中存储和操作数据。

变量的分析

在这里插入图片描述
修改
在这里插入图片描述
也有那种独特理解
在这里插入图片描述
变量就是你的房间号 308 309 401
变量的类型就是房间的种类 单人间 双人间 大豪房
房间的值 就是所住的人 或是 所放的物品

1.变量的创建的四种形式

1.1总结

var a int   //不给值    声明
var a int =12 //手动补充类型  初始化
var a = 12 //自动补充类型   初始化
a := 12   //省略var 和类型  自动补充类型  初始化

1.2第一种 var a int 声明

这只是声明了一种变量 但是变量没有值 系统会分配默认值

fmt.Printf("\n----------var b string---------------\n")
var b string
fmt.Printf("%s",b) //  只声明 不赋值  就会默认值  空
var a int
fmt.Printf("%d",a) //  只声明 不赋值  就会默认值  0

1.3 第二种 var a string = “XXXX” 初始化

这只是声明了一种变量 而且给了值
这就是我们所说的初始化

fmt.Printf("\n----------var b string=xx---------------\n")
var str string = "hello"
fmt.Printf(str)
var str1 string = 12  //类型不比配 报错
fmt.Printf(str1)

需要注意的是:
当类型是string 是无法接受其他类型的 否则就会报错
比如:

var str1 string = 12  
定义了string 但是给了数值12  会报错的

1.4第三种 var a = “XXXX”

这种方式 很常用的 不要要声明类型 直接赋值
程序会根据值 来判断类型

fmt.Printf("\n----------var b =xx---------------\n")
var num = 12;
fmt.Println(num)
var num1 = "我爱你"; //可以不用声明类型 自动识别
fmt.Println(num1)

1.5第四种 a := XXXX

这种方式go独有的 很厉害 也很常用
a := xx
省略的var 关键词 还自动分配数据类型

fmt.Printf("\n----------b := xx---------------\n")
name := "jack" //省略 var 和 类型
fmt.Println(name)
money := 16545646 //省略 var 和 类型
fmt.Println(money)

2.一次性声明多个变量

在一行中声明 多个变量

//2.一次性声明多个变量
var hobby1,hobby2,hobby3,hobby4 int
fmt.Println(hobby1)
fmt.Println(hobby2)
fmt.Println(hobby3)
fmt.Println(hobby4)

3.一次初始化多个变量

//3.一次性初始化多个值
//方式一
//var girl,age,hobby,knowledge = "新垣结衣",18,"拍照","本科"
//方式二
girl,age,hobby,knowledge := "新垣结衣",18,"拍照","本科"
fmt.Println(girl)
fmt.Println(age)
fmt.Println(hobby)
fmt.Println(knowledge)

3.1交换值

//交换值
xxx,yyy:= 12,45
fmt.Println(xxx)
fmt.Println(yyy)

xxx,yyy = yyy,xxx
fmt.Println(xxx)
fmt.Println(yyy)

4.全局变量–局部变量

//局部棉量就是 在函数或是{}中的变量
//全局变量 不在函数中

package main

import "fmt"
//---------------------------全局变量  不存在任何函数当中-------------//
var cont11 = "12"
var cont22 = "12"
var cont33 = "12"

//此处可以定义   全局的变量-----函数外面的变量
//上面的声明  作者为了统一这些外部变量 创建以下方式
var (
	 cont1 = "12"
	 cont2 = "12"
	 cont3 = "12"
)



func main() {
	
	fmt.Println(cont1)
	fmt.Println(cont2)
	fmt.Println(cont3)
	
	areaone(45)
	//函数外的变量  文件中的变量----全局
	fmt.Println(cont33)
	//函数中的变量------局部
	var xx = "我是main中的局部变量"
	fmt.Println(xx )
	
	//{} 的局部变亮
	//{
	//	var xx = 77
	//}
	//fmt.Println(xx)
	
}
func areaone(a int)  {
	//-----------------------------局部变量 函数中的变量
	var c = "我是局部在函数中的"
	fmt.Println(a)
	fmt.Println(c)
}

从数据结构的角度分析局部变量 — 全局变量

> 如果从数据结构的 方面讲解局部变量 — 全局变量
> 函数的执行 都会进行压栈的操作 栈顶的函数会创建一个空间 创建函数中的
> var 变量 当函数执行完后 就会进行 出栈的操作 此时函数创建的变量都会销毁
> 所以函数中的变量都是局部性的
> 下次执行在重新压栈
> 而在文件.go中不属于任何的函数变量 会一直存在 所以可以全局使用 任何函数都可使用

5. 声明和初始化的区别

声明----只创建 没有值
在这里插入图片描述

初始化--------创建就赋值
在这里插入图片描述

常见变量

在这里插入图片描述

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

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

相关文章

Kafka生产调优源码

一、Kafka硬件配置选择 1.1 场景说明 100 万日活,每人每天 100 条日志,每天总共的日志条数是 100 万 * 100 条 1 亿条。 1 亿/24 小时/60 分/60 秒 1150 条/每秒钟。 每条日志大小:0.5k - 2k(取 1k)。 1150 条/…

算法------排序算法------冒泡排序法

介绍 冒泡排序法又称交换排序法,原理是从第一个元素开始,比较相邻元素的大小,如大小顺序有误,则对调后再进行下一个元素的比较,一次扫描之后可以确保最后一个元素位于正确的位置。接下来进行的第二次扫描,…

SSMP整合案例(5) Spring Boot整合MyBatis-Plus实现条件查询

讲完条件查询 那么 我们整个数据层的代码就写完了 可以看到 我们之前的代码 查询语句都有一个 参数 QueryWrapper 这个就是查询条件 其实 我们可以直接这样写 QueryWrapper<book> Query new QueryWrapper<>(); bookDao.selectList(Query);QueryWrapper类需要手…

Spring加载后初始化的9种方式

本文来聊一下在spring中&#xff0c;当spring 容器启动后&#xff0c;我们有几种初始化操作的方式。 目录 Spring加载后初始化的几种方式 Component和Service加构造方法 ContextRefreshedEvent事件 代码如下&#xff1a; 输出结果&#xff1a; PostConstruct 注解 代码如…

基于骨骼关键点的动作识别(OpenMMlab学习笔记,附PYSKL相关代码演示)

一、骨骼动作识别 骨骼动作识别是视频理解领域的一项任务 1.1 视频数据的多种模态 RGB&#xff1a;使用最广&#xff0c;包含信息最多&#xff0c;从RGB可以得到Flow、Skeleton。但是处理需要较大的计算量 Flow&#xff1a;光流&#xff0c;主要包含运动信息&#xff0c;处理…

面向对象分析与设计 UML2.0 学习笔记

一、认识UML UML-Unified Modeling Language 统一建模语言&#xff0c;又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。 UML是在开发阶段&#xff0c;说明、可视化、构建和书写一个面向对象软件密集系统的制品的…

Hyper-V虚拟机在wifi环境下的外网连接配置

目录 什么是虚拟交换机管理器了解虚拟交换机中的三个概念通过无线网卡创建虚拟交换机遇到的问题wifi环境下虚拟机外网连接方法 前面我们已经安装好了Hyper-V虚拟机和liunx操作系统&#xff0c;但是我们没有给虚拟机配置网络&#xff0c;本来我以为是一件很简单的事情&#xff0…

【Spring Boot学习】怎么配置文件,配置文件有什么用

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们依然是学习Spring Boot&#xff0c;这里我们会更加了解Spring Boot的知识&#xff0c;知道Spring Boot的配置文件是什么样子的。有什么用&#xff1f;怎么使用Spring Boot的配置文件。 &#x1f49e;&#x1f49e;路漫漫&a…

Apache James 同时开启25、587、465端口

前提&#xff1a; 可以参考如下两篇文章在window或者linux上&#xff0c;先部署好Apache James Apache James邮件服务器搭建&#xff08;linux&#xff09;_Steven-Russell的博客-CSDN博客 Apache James邮件服务器搭建&#xff08;windows&#xff09;_Steven-Russell的博客…

Qt6.2教程——6.QT常用控件QLineEdit

一&#xff0c;QLineEdit简介 QLineEdit是Qt库中的一个控件&#xff0c;它提供了一个单行的文本输入框。用户可以在这个输入框中输入和编辑文本。它可以设置占位符文本&#xff08;Placeholder Text&#xff09;&#xff0c;当QLineEdit为空的时候显示这个占位符文本。它还可以…

JDK8新特性之方法引用【 ::】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于方法引用的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.是什么 二.为什么要用 三.什么时候…

chrome录制保存网络请求

有时候&#xff0c;需要与同事共同查看网络请求&#xff0c;但是现场往往环境限制&#xff0c;导致无法访问环境。在这里推荐一种利用chrome保存网络请求的方法。 准备&#xff1a; 1. chrome浏览器&#xff08;最好版本号是62以上&#xff09; chrome浏览器越新越好(最新稳定…

rsarsa

数学很酷&#xff01;使用RSA算法对秘密消息进行解码&#xff0c;c&#xff0c;p&#xff0c;q&#xff0c;e是RSA算法的参数。 RSA算法还不太了解&#xff0c;经过这段时间的学习&#xff0c;得知 q和p是最开始选择的两个质数&#xff0c;主要是为了计算出钥匙n e是在1到φ(n)…

服务器编程:数据库连接池

引言&#xff1a; 数据库连接池和线程池的思想一样&#xff0c;是为了避免频繁创建和销毁数据库连接导致的性能开销。如果一个项目频繁的需要访问数据库&#xff0c;那么它就有可能需要频繁的创建/销毁数据库连接&#xff0c;那么我们可以采用数据库连接池的技术&#xff0c;在…

Docker中搭建RabbitMQ集群

Docker中搭建RabbitMQ集群 1、启动三个RabbitMQ容器2、为容器设置节点2.1、设置Erlang Cookie2.2、设置节点12.3、设置节点22.4、设置节点32.5、预览结果 3、配置镜像队列3.1、配置镜像的原因3.2、搭建步骤 1、启动三个RabbitMQ容器 服务器IP端口hostname管理界面地址192.168.…

IoC容器的设计(利用反射、注解和工厂模式实现)

1.实验要求 利用注解、反射和工厂模式设计一个简单的IoC容器该IoC容器包含3个注解和一个IoC容器类&#xff08;AnnotationConfigApplicationContext&#xff09;&#xff0c;其定义如下&#xff1a; 注解&#xff1a; 注解含义Component标注BeanAutowired标注需要被注入的对…

如何写好一份企业直播主题策划?

写一份好的直播主题策划&#xff0c;需要考虑包括目标受众、目的、内容、形式、互动等&#xff0c;下面是写企业直播主题策划的一些关注点&#xff0c;希望能帮到您。 定位您直播的目标受众 明确你的直播主题适合的目标受众是谁&#xff0c;他们的兴趣、需求和期望是什么。了解…

OAuth2,jwt,springsecurity之间的区别和联系

OAuth 2.0、JWT (JSON Web Token) 和 Spring Security 是安全相关的概念和技术&#xff0c;它们有着不同的功能和用途。 OAuth 2.0&#xff08;开放授权&#xff09;&#xff1a; OAuth 2.0 是一种授权框架&#xff0c;用于授权第三方应用程序访问用户资源&#xff0c;而无需共…

【OpenCV DNN】Flask 视频监控目标检测教程 10

欢迎关注『OpenCV DNN Youcans』系列&#xff0c;持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 10 3.10 OpenCV DNNFlask实时监控目标检测1、加载MobileNet SSD模型2、导入分类名称文件3、处理视频帧进行目标检测4、新建一个Flask项目5、Python 程序文件6、视频流的网…