Go 变量

本文详细介绍了Go语言中的变量定义,包括标准格式、赋初值、省略类型和其他形式,如函数内外的变量定义。同时,文章还讨论了变量交换的不同方法,匿名变量的使用,以及变量的作用域,包括局部变量、全局变量和形式参数的作用范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 变量定义

  • Go 语言是静态强类型语言,变量(variable)有明确的类型,编译器也会检查变量类型的正确性。从计算机系统的角度,变量就是一段或者多段内存,用于存储数据。

1.1 标准格式

var 变量名 变量类型

  • 例如:var studentNum int
    • 变量的命名规则可以遵循驼峰命名法,首个英文单词小写,后面每个新单词的首字母大写

    • 此处变量名报错是因为 go 语言严格的要求:定义了的变量就一定要使用到,不可以只定义变量却没有使用,这个规则在真正项目实战中会避免定义很多无用的变量,这些无用变量很多时候还需要花费时间和精力去维护。
  • 变量定义之后会有合理的初始值,可以打印查看
    • 此处有两个变量,但是控制台只打印了一个,因为 string 字符串默认初始值为空,如果需要打印空字符串,可以使用 printf

1.2 变量赋初值

  • 定义变量时可以直接给变量赋一个初值

  •  也可以在一行同时定义多个变量

 1.3 省略类型

  • 编译器会自动通过后面的赋值推断变量的类型,所以在定义变量时可以省略变量类型

    • 这个在早期的 C 和 C++ 是不能够自动判断的,后来的 C++ 通过关键字的优化也可以实现自动判断变量类型
  • 定义变量时一行甚至可以是不同的类型

 1.4 其他形式

1.4.1 函数内

  • 函数中首次定义变量时可以通过省略 var ,使用 := 的方式

  • := 的效果和 var 是一样的,代表定义一个变量,定义之后还可以对其进行赋值;但之后的赋值就不可以再用 := 的方式,比如修改变量 teacherNum 的值为 1 ,就会提示报错

  •  如果想要修改已经定义好的变量,只能通过 = 来进行更改

  •  但是首次定义变量时如果直接使用 = 也会提示编译错误,会自动判断这些变量并没有被定义

 1.4.2 函数外

  • 在函数外一样可以定义变量

  • 函数外定义变量不能使用 := 只能使用 var 

  • 每行都通过 var 定义比较麻烦,可以通过 var() 集中定义变量

2. 变量交换

例如:a = 1,b = 2;进行交换之后,a = 2,b = 1

 2.1 通过中间变量实现

2.2 省略中间变量实现

 2.3 直接交换[最方便快捷]

 3. 匿名变量(空白标识符"_")

  • 多重赋值 时,如果不需要在左侧接收对应变量的值,可以使用匿名变量,可以使用 "_" 来代替

  • 匿名变量不会占用命名空间,也不会分配系统内存。匿名变量可以重复声明使用。但不可以使用这个标识符作为变量对其它变量进行赋值或运算。
  • 匿名变量不可以单独定义。

 4. 作用域

变量的作用域 - 就是变量的有效范围,一个变量(常量、类型或者函数)在程序中都有一定的作用范围,这个范围被称之为 作用域。 

  • 由于 Go 语言会在每次编译时检查每个变量都是否被使用,一旦存在未使用的变量,就会报编译错误,所以了解变量的作用域对学习 Go 语言来说还是比较重要的。
  • 根据变量定义的位置不同,可以分为三种类型
    • 局部变量 - 定义在函数内的变量
    • 全局变量 - 定义在函数外的变量
    • 形式参数 - 函数定义中的变量

4.1 局部变量

  • 在函数体内声明的变量,作用域 只在函数体内

4.2 全局变量

  • 全局变量只需要在一个 源文件 中定义,就可以在所有源文件中使用。
  • 全局变量的声明 必须以 var 关键字开头的方式进行,如果想要在外部包中使用,那么对应全局变量的 首字母必须大写

Go 语言的程序中,全局变量与局部变量的名称可以重复,但在函数体内的局部变量优先级会高于全局变量

 4.3 形式参数(形参)

  • 定义函数时,函数后面括号中的变量就是 形式参数 。
  • 形式参数仅在函数被调用时生效。
  • 形式参数会作为 函数的局部变量 来使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值