首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Go语言】| 第2课:变量声明与、初始化、匿名变量和作用域

【Go语言】| 第2课:变量声明与、初始化、匿名变量和作用域

作者头像
程序员洲洲
发布2024-11-06 08:14:31
发布2024-11-06 08:14:31
15400
代码可运行
举报
文章被收录于专栏:项目文章项目文章
运行总次数:0
代码可运行

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。 🌼 同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以直接站内私信我或文章底部名片。 🖥 随时欢迎您跟我沟通建联,一起交流,一起成长、进步!

一、变量声明

Go语言是静态类型语言,变量是有明确类型要求的,编译器也会检查变量类型的正确性。

Go的标准格式如下,以var开头,行尾不需要分号: var 变量名 变量类型

代码语言:javascript
代码运行次数:0
运行
复制
var csdn int //例如声明了一个csdn的int变量

在C语言中,声明变量如下,这样只有csdn是指针,但是zhou不是指针。如果采用go的一种形式,

代码语言:javascript
代码运行次数:0
运行
复制
int *csdn,zhou

在Go中,当一个变量被声明之后,系统会自动赋予该类型的零值,Go中所有的内存都是经过初始化的。

比如说下方的代码示例:

二、不指明变量类型

如果没有声明变量类型,Go会编译的时候自动推到类型。

比如说下面的例子,其中printf是表示带有格式化的输出。

三、批量声明方式

Go给开发者提供了批量声明的方式,比如下面的例子。

我们也可以查看他们的初始值:

四、简短格式

我们可以采用如下的格式进行声明

代码语言:javascript
代码运行次数:0
运行
复制
i:=1 //直接省略掉了var

这种形式存在一定的限制: 1、只能定义在函数内部。 2、不能提供数据类型。 3、定义变量,同时显式初始化。

五、初始化变量与匿名变量

不可以重复声明一个变量,会提示报错。

但是在网络连接时候存在特例,net网络包的返回值有两个。

但是在进行返回值的时候,只要左边的变量不一样,另一个变量声明可以是一样的。这里的err就是重复定义了。

也就是多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,但是编译器也是不会报错的。

如果不想接受err的值,可以有_来表示(即下划线),这就是匿名变量。

如下代码所示:

代码语言:javascript
代码运行次数:0
运行
复制
conn,_:=net.Dial("tcp","127.0.0.1:8080")

匿名变量不占用命名空间,也不会分配内存,可以重复声明使用的。

任何变量都可以赋值给匿名变量,匿名变量也称为空白标识符,但是任何赋值给这个匿名变量的值都会被抛弃,这些值后面不可以继续使用,也不可以使用这个标识符作为变量对其他变量进行赋值或者运算。

六、变量交换赋值

Go语言中,提供了一种非常方便的赋值交换方式,如下代码所示。

七、变量作用域

  • Go语言有一个很重要的性质,就是编译的时候会进行变量检测,如果出现了没有使用过的变量,就会报编译错误。

7.1 局部变量

顾名思义,函数体内声明的变量称之为局部变量,作用域只在函数体内部,函数的参数还有返回值都是局部变量。

局部变量不是一直存在的,只在定义它的函数被调用后存在,调用结束后这个局部变量就会被销毁。

7.2 全局变量

全局变量只需要在函数体外进行声明即可,只需要在一个源文件中进行定义,就可以在所有的源文件中进行使用,其他的源文件只需要import这个包含全局变量的文件即可。

全局变量必须以var开头的,想要在外部的包中进行使用,必须首字母大写。

值得一提的是,局部变量与全局变量可以相同,但是函数体内部的局部变量会被优先考虑。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、变量声明
  • 二、不指明变量类型
  • 三、批量声明方式
  • 四、简短格式
  • 五、初始化变量与匿名变量
  • 六、变量交换赋值
  • 七、变量作用域
    • 7.1 局部变量
    • 7.2 全局变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档