我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Go语言的变量与常量怎么定义

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Go语言的变量与常量怎么定义

这篇文章主要介绍“Go语言的变量与常量怎么定义”,在日常操作中,相信很多人在Go语言的变量与常量怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的变量与常量怎么定义”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    1.变量交换

    简单阐述一下什么是变量交换,顾名思义,就是将变量的值进行交换的一个动作

    例如我们定义了两个变量a:=10b:=20,那么这时候我们想要将两个变量的值进行交换的话,在Go语言中为我们提供了比较方便的方式。

    案例

    package mainimport "fmt"func main() {// 定义变量a、b,并且分别赋值10、20a, b := 10, 20// 第一轮输出查看结果fmt.Println("原本a、b的结果为:", a, b)// 然后我们可以直接用 = 号来对a、b进行快速赋值,交换他们的位置a, b = b, a  // 第二轮输出查看结果fmt.Println("新输出的a、b结果为:", a, b)}

    通过以上代码我们可以看到,在=的右侧寓意为赋值,因为在Go中支持多赋值和多声明的代码形式,所以我们只需要将要赋值的变量进行位置对换,那么新的值就被赋予了。

    2.匿名变量

    阐述完变量交换,那么我们就不得不提变量中的一个特殊存在,那就是匿名变量

    将值赋予给匿名变量实际上也就等于将这个值给抛弃了。通常也称之为抛弃值

    关键标识

    利用 _ 下划线,来标识匿名变量,也是我们所说的空白标识符

    案例

    package mainimport "fmt"func main() {// 定义变量_, a := 10, 7// 使用匿名变量的时候10就是抛弃值fmt.Println("输出结果:", a)}

    2.1.如何理解这个匿名变量的使用场景?

    可能很多人会有疑问这个匿名变量有什么意义,其实在实际的使用场景中,匿名变量的使用意义个人感觉更趋近于占位符。

    假设我们用到了某个函数名字叫Dial()的函数,这个函数会返回两个值给我们,那么我们只需要其中的一个值即可,另一个值我们用不到,但是因为是返回值,代码规则里面我们要接收,所以这时候我们就可以用匿名变量来占住另一个值的位置,代码如下。

    案例

    package mainimport ("fmt""net")func main() {    //conn, err := net.Dial("tcp", "127.0.0.1:8080")    //如果不想接收err的值,那么可以使用_表示,这就是匿名变量    conn, _ := net.Dial("tcp", "127.0.0.1:8080")fmt.Println(conn)}

    这里的net.Dial()函数就有两个返回值,分别为conn,err,那么我们只需要conn这个返回值的时候,我们就可以利用到匿名变量来占位获取到另一个返回值,但是我们可以不需要用到这个返回值。

    3.关于作用域

    一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域

    首先Go语言的特殊性导致在编译的过程中如果出现你定义的变量、常量、函数等没有被使用的话,编译是无法通过的,所以了解作用范围是很有必要的。

    了解作用域可以更好的定义你需要使用的内容,也可以解决一些编译过程中的错误。

    根据定义的位置总结三种

    • 函数内定义的变量称为局部变量

    • 函数外定义的变量称为全局变量

    • 函数定义中的变量称为形式参数

    所谓的函数可以暂时先理解成一块代码片段,比如我们案例中常用的main()就是函数

    将内容定义在函数的{ }内,就可以称之为定义在函数体内。

    3.1.局部变量

    在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。

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

    案例

    package mainimport "fmt"func main() {// 定义变量,以下这些定义在main()函数中的都可以称之为局部变量a := 10b := 20c := a + b  // 输出局部变量fmt.Println("输出局部变量为:", a, b, c)}

    3.2.全局变量

    在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。

    全局变量声明必须以 var 关键字开头,如果想要在外部包中使用(也就是想要被别的包进行import引用),那么全局变量的首字母必须大写。

    案例

    package mainimport "fmt"// 定义全局变量,必须有var关键字,并且在函数体外面var a = 10var b = "let's go"func main() {// 在main()函数中调用a、bfmt.Println("输出全局变量为:", a, b)demo()}func demo() {// 因为是全局使用,在要在这个源码中我们的方法都能调用到// 因此我在sum()函数中也可以调用到b变量的值fmt.Println("调用sum()函数输出的全局变量为:", b)}

    可以看到如上案例,无论是在main()函数中还是在我们的demo()函数中,我们都可以得到a、b的值进行输出

    使用细节:关于全局与局部同名怎么办?

    大家可能会思考一个问题,如果我有一个全局变量叫a,同时我又在函数中也定义了一个局部变量a,这两个变量的名字相同但是值不同,那么我们程序应该采用谁?

    其实大部分时候遇到这种情况,程序当中遵循的一般都是就近原则,也就是说很多时候我们的程序是谁离得近,就用谁。

    也就说出现如上情况我们会优先先采用离得近的局部变量

    案例

    package mainimport "fmt"var a = "这是全局变量"func main() {a := "这是局部变量"fmt.Println("在main中会采用的变量是:", a)demo()}func demo() {fmt.Println("如果没有局部变量影响: ", a)}

    得到的结果是:

    在main中会采用的变量是: 这是局部变量
    如果没有局部变量影响: 这是全局变量

    注意:虽然这种情况会出现,但是还是不要出现这种让人容易产生歧义的代码,规则虽然没有不允许但是代码规范上显然这样是不对的

    3.3.形式参数

    在定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。

    形式参数某种意义上也是一个被声明的局部变量,所以我们在定义局部变量的时候不要出现局部变量与形式参数重名的情况为好。

    案例

    package mainimport "fmt"// 定义了全局变量var a = "这是全局变量"func main() {// 这里是局部变量a := "这是main的局部变量a"b := "这是main的局部变量b"fmt.Println("输出变量的值为: ", a, b)// 在调用test()函数的时候传递局部变量a、b的值test(a, b)}// 在函数中定义形参a、b,那么当test()函数被调用的时候// 形参就可以直接被当作局部变量来使用,值则是由调用者的传递内容来决定的func test(a, b string) {// 输出结果fmt.Println("这是由main传过来的内容:", a, b)}

    得到的输出结果为:

    输出变量的值为: 这是main的局部变量a 这是main的局部变量b
    这是由main传过来的内容: 这是main的局部变量a 这是main的局部变量b

    通过上述案例,让我们对 局部变量 、 全局变量 、 形式参数 有一个了解,并且分清楚他们之间的区别和使用

    4.关于常量

    在我们开始介绍代码中的常量的时候,我们要先阐述一下什么叫做常量?

    实际上所谓的常量就是一个不会改变的值,用来存储一些我们自己事先规定好、不会改变的值

    4.1.常量的使用

    Go语言中的常量使用关键字const定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。

    由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式

    语法

    // 注意了 []表示 数据类型 可写,可不写const 常量名 [数据类型] = 值

    从之前的变量声明中我们可以知道,其实Go语言很多时候想要简化一些批量性的动作,因此在定义常量的时候也可以采用批量式的定义。

    批量定义的语法

    const (常量名1 = 值1  常量名2 = 值2  ...)

    所有常量的运算都可以在编译期完成,这样不仅可以减少运行时的工作,也方便其他代码的编译优化,当操作数是常量时,一些运行时的错误也可以在编译时被发现,例如整数除零、字符串索引越界、任何导致无效浮点数的操作等。

    案例

    // 单个定义常量const pi= 3.14159// 批量定义常量const (    e  = 2.7182818    pi = 3.1415926)

    4.2.常量使用的细节

    其实在使用常量的过程中,我们除了采用批量定义的方式来定义常量,我们还可以用另一种方式在批量定义常量的同时,简化常量初始化(赋值)的过程。

    简单来说,假设我要定义a、b、c、d四个常量。a、b的值都定义为10,c、d的值都定义为20,那么我们在初始化的时候就可以进行一些简化操作。

    案例解析

    package mainimport "fmt"const (a = 10bc = 20d)func main() {fmt.Println("输出定义的常量:", a, b, c, d)}

    最终得到的输出结果为:

    输出定义的常量: 10 10 20 20

    4.3.iota常量生成器

    常量声明可以使用 iota 常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。

    简单来说呢,就是有点类似于计数器的存在,在定义第一个常量的时候会被归置为0,然后依此累加1

    需求

    我们从需求出发可能更好理解这个iota

    假设我们要定义常量为周一到周天,那么周一为0,依次类推周天为6。

    案例解析

    package mainimport "fmt"// 定义周一到周天const (Monday = iotaTuesdayWednesdayThursdayFridaySaturdaySunday //6)func main() {fmt.Println("输出日期的值为:", Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)}

    输出的结果为:

    输出日期的值为: 0 1 2 3 4 5 6

    当然我们知道iota的初始值默认归0,但是只要你在第一步对iota进行运算操作,比如Monday = iota+1,那么你可以发现在改变初始值的情况下,后续的值也会陆续发生改变,可以动手试试哦!

    到此,关于“Go语言的变量与常量怎么定义”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Go语言的变量与常量怎么定义

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Go语言的变量与常量怎么定义

    这篇文章主要介绍“Go语言的变量与常量怎么定义”,在日常操作中,相信很多人在Go语言的变量与常量怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的变量与常量怎么定义”的疑惑有所帮助!接下来,请跟
    2023-07-05

    Go 语言的变量与常量的概念

    本篇内容主要讲解“Go 语言的变量与常量的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go 语言的变量与常量的概念”吧!变量go 语言的变量声明和大多数语言类似,通过 var 关键字声明变
    2023-06-15

    Go语言变量怎么定义和使用

    这篇“Go语言变量怎么定义和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言变量怎么定义和使用”文章吧。在Go语言
    2023-07-04

    go语言的变量定义示例详解

    这篇文章主要为大家介绍了go语言的变量定义示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-20

    Go语言如何定义一个常量

    Go语言中,常量表示值在程序执行期间保持不变。定义常量有两种类型:无类型和类型化。无类型常量不指定类型,编译器会根据值推断;类型化常量明确指定类型。定义语法分别为:const常量名=常量值const常量名类型=常量值常量规则包括:常量名必须是有效标识符常量值必须在编译时即可确定常量一旦定义就不能修改常量用途广泛,例如存储数学常数、应用程序配置或枚举值,提高代码可读性、可维护性和纠错能力。此外,Go语言还提供了iota枚举,允许创建一组递增的整型常量。iota从0开始,每声明一个常量增加1。
    Go语言如何定义一个常量
    2024-04-02

    Go语言变量与常量如何声明与使用

    本文小编为大家详细介绍“Go语言变量与常量如何声明与使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go语言变量与常量如何声明与使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。变量什么是变量?变量是一块可以
    2023-07-05

    C语言常量类型怎么定义

    这篇文章主要介绍“C语言常量类型怎么定义”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言常量类型怎么定义”文章能帮助大家解决问题。常量的定义常量就是一个不变的量(比如圆周率,性别,身份证号码)C
    2023-06-29

    C语言关键字及变量怎么定义与声明

    这篇“C语言关键字及变量怎么定义与声明”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言关键字及变量怎么定义与声明”文章吧
    2023-07-02

    重学Go语言之变量与常量的声明与使用详解

    变量、常量的声明与使用是掌握一门编程语言的基础,在这篇文章中,小编就来带大家学习一下Go语言是怎么样声明和使用变量与常量吧
    2023-03-02

    golang语言中如何定义变量

    定义变量方法:1、使用var关键字可以定义一个或多个变量。语法为“var 变量名 类型”;2、使用const关键字可以定义常量,常量是不可修改的值,其值在定义后不能改变。语法为“const 常量名 类型 = 值”;3、使用类型推断来简化变量
    golang语言中如何定义变量
    2023-12-15

    c语言常量定义的方法是什么

    在C语言中,常量可以使用#define预处理器指令或使用const关键字来定义。使用#define定义常量:#define PI 3.14159#define MAX_NUM 100使用const关键字定义常量:const double
    c语言常量定义的方法是什么
    2024-03-07

    go语言中变量怎么声明

    今天小编给大家分享一下go语言中变量怎么声明的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。变量声明方法有:1、使用var来声
    2023-07-05

    c语言指针变量如何定义

    在C语言中,指针变量可以通过在变量名前面加上"*"符号来定义。例如,定义一个整型指针变量可以这样写:int *ptr;这里ptr就是一个整型指针变量,可以存储整型变量的地址。定义其他类型的指针变量也可以按照相同的方式进行,只需将类型名替换
    c语言指针变量如何定义
    2024-04-09

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录