当前位置:首页 > 文章列表 > Golang > Go教程 > Golang语言的多种变量声明方式与使用场景详解

Golang语言的多种变量声明方式与使用场景详解

来源:脚本之家 2023-01-22 15:00:55 0浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《Golang语言的多种变量声明方式与使用场景详解》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

01介绍

在程序设计中,编译器必须将代表数据的变量名称替换成该数据所在的内存地址。变量的名称、类型及内存地址通常会维持固定,但该内存地址所存储的数据在程序执行期间则可能会改变。

Golang 语言编译器需要先明确变量的内存边界,才可以使用变量。通过声明变量使用的类型,编译器可以明确变量的内存边界。

因为 Golang 语言是静态语言,它不能像动态语言那样,在运行时可以通过分析变量的值,自动确定变量的内存边界,所以在 Golang 语言中,使用变量之前,需要先声明变量。

在 Golang 语言中,在变量显式赋值的前提下,声明变量可以省略类型,和使用短变量声明方法时,也不需要指定变量类型,此时,编译器会根据变量的值通过类型推断得出变量类型,从而明确变量的内存边界。

02变量声明方式

Golang 语言的变量声明比较灵活,它支持多种变量声明的方式,包括标准声明变量,不显式赋初始值声明变量,省略类型声明变量和短变量声明。

标准声明变量

var a int = 100

阅读上面这段代码,我们可以发现 Golang 语言的标准声明变量方式包含 4 部分,分别是 var 关键字,变量名 a,变量类型 int 和变量的值 100。

不显式赋初始值声明变量

如果我们不想给声明的变量赋初始值,也可以不显式给变量赋值,省略等号和值,如下所示:

var a int

如果不显式给变量赋值,变量的值是类型的零值,即类型的默认值。

省略类型声明变量

标准声明变量方式的 4 部分,除了可以不显式给变量赋值,还可以省略类型,如下所示:

var a = 100

我们在文章开头介绍编译器需要根据变量的类型确定变量的内存边界,如果在声明变量时,未指定变量的类型,编译器还可以确定变量的内存边界吗?

答案是可以。原因是 Golang 编译器可以根据变量的赋值通过类型推断得到变量的类型。

细心的读者可能会问,Golang 语言可以将标准变量声明方式的 4 部分中类型和显式赋初始值同时省略吗?

答案是不可以。Golang 编译器必须至少明确变量的类型或初始值,二者如果都省略,编译器将无法得到变量的类型,从而也就不能根据类型明确变量的内存边界。

短变量声明

以上两种在标准声明变量方式的基础上简化的变量声明方式,都需要使用关键字 var,可能会有读者问可以省略关键字 var 吗?

答案是可以。Golang 语言还有一种最简化的声明变量的方式,短变量声明,使用短变量声明的方式,可以同时省略关键字 var 和变量的类型。

a := 100

阅读上面这段代码,它就是短变量声明,与标准变量声明的方式相比,该方式省略了关键字 var 和变量的类型。但是,细心的读者可能已经发现,= 改为 :=。Golang 编译器可以根据变量的赋值做类型推断,得到变量的类型,从而明确变量的内存边界。

短变量声明的方式虽然是 Golang 语言中最简化的变量声明的方式,但是它也有局限性,它只能用于局部变量声明。

显式类型转换

无论是省略类型显式赋初始值声明变量,还是短变量声明,它们都是 Golang 编译器根据变量的赋值,通过类型推断得出变量的默认类型。

如果我们也不想使用变量的默认类型,那么我们可以通过显式类型转换得到我们想要的变量类型,如下所示:

var a = int8(100)
b := int8(60)

变量列表声明

所有声明变量的方式,都支持变量列表声明。所谓变量列表声明,就是使用 var 关键字,通过一行代码声明多个变量。

var a, b, c int = 100, 200, 300
var d, e, f int
var g, h, i = 400, "你好", true
j, k, l := 500, "世界", 3.14

变量声明块

Golang 语言还支持变量声明块,使用关键字 var 将多个单个变量声明或变量列表声明放在一起,如下所示:

var (
    a int = 100
    b int = 200
)

var (
    c = 300
    d = 3.14
    f = true
)

var (
    e, f, g int = 10, 20, 30
    h, i, j string = "a", "b", "c"
)

03使用场景

我们介绍了多种变量声明的方式,那么每种 Golang 语言变量声明方式的使用场景分别是什么,首先,我们需要先了解 Golang 语言中变量的作用域,分别是包级变量,全局变量和局部变量。

包级变量

包级变量的作用域是只能在同一个 package 中使用。

包级变量,只能使用 var 关键字的变量声明方式,如果变量声明显式初始化,一般会使用省略类型声明变量的方式。

全局变量

全局变量的作用域是在项目的任意位置都可以使用。

如果包级变量的变量名首字母大写,也就是 Golang 语言中的导出变量,那么这个变量就成为全局变量,可以在全局使用。

全局变量,也只能使用 var 关键字的变量声明方式,如果变量声明显式初始化,一般会使用省略类型声明变量的方式。

局部变量

局部变量的作用域是只能在函数体或方法体中使用。

局部变量,一般会优先使用短变量声明的方式,除非不想给局部变量显式初始化,我们可以使用省略类型声明变量的方式。

04注意事项:

函数外的每个语句都必须以关键字开始(var、const、func等);

:= 不能使用在函数外;

_ 多用于占位,表示忽略值;

05总结

本文我们介绍 Golang 语言为什么在使用变量之前,需要先声明变量;Golang 语言有哪些变量声明的方式和 Golang 语言的每种变量声明方式适用于什么场景。

到这里,我们也就讲完了《Golang语言的多种变量声明方式与使用场景详解》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
深入理解go缓存库freecache的使用深入理解go缓存库freecache的使用
上一篇
深入理解go缓存库freecache的使用
Go中groutine通信与context控制实例详解
下一篇
Go中groutine通信与context控制实例详解
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 茅茅虫AIGC检测:精准识别AI生成内容,保障学术诚信
    茅茅虫AIGC检测
    茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
    18次使用
  • 赛林匹克平台:科技赛事聚合,赋能AI、算力、量子计算创新
    赛林匹克平台(Challympics)
    探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
    49次使用
  • SEO  笔格AIPPT:AI智能PPT制作,免费生成,高效演示
    笔格AIPPT
    SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
    57次使用
  • 稿定PPT:在线AI演示设计,高效PPT制作工具
    稿定PPT
    告别PPT制作难题!稿定PPT提供海量模板、AI智能生成、在线协作,助您轻松制作专业演示文稿。职场办公、教育学习、企业服务全覆盖,降本增效,释放创意!
    52次使用
  • Suno苏诺中文版:AI音乐创作平台,人人都是音乐家
    Suno苏诺中文版
    探索Suno苏诺中文版,一款颠覆传统音乐创作的AI平台。无需专业技能,轻松创作个性化音乐。智能词曲生成、风格迁移、海量音效,释放您的音乐灵感!
    57次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码