概述
文章目录
- 一. 变量与变量名
- 变量的来历
- 变量定义
- 变量类型
- 二. 变量的声明与初始化艺术
- 1. 只声明
- 2. 声明的同时初始化
- 1. 先声明,再初始化
- 2. 声明的同时初始化
- 3. 声明的同时初始化,并省略类型
- 4. 使用“赋值”进行声明初始化
- 3. 注意事项
- 三. 匿名变量:一种特殊变量
- 四. 注意事项
- 参考链接
一. 变量与变量名
变量的来历
程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。
变量定义
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
变量名由字母、数字、下划线组成,其中首个字符不能为数字。(参见标识符的命名规则)
变量类型
变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。
经过半个多世纪的发展,编程语言已经基本形成了一套固定的类型,常见变量的数据类型有:整型、浮点型、布尔型等。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。声明的时候要告诉系统自己是什么类型的。
二. 变量的声明与初始化艺术
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。并且Go语言的变量声明后必须使用。
声明 其实声明的是变量的数据类型。
初始化是给变量赋值。
1. 只声明
Go 语言的声明变量格式 是使用 var 关键字:
var name(变量名) type(数据类型)
//同一类型的多个变量可以声明在同一行
var name1, name2, name3 type
这种 “ 只声明,不初始化 ”的情况,变量默认为0值。
其中,数值类型(包括complex64/128)默认为 0
。布尔类型默认为 false
。字符串默认为 ""
(空字符串)。其他类型默认为 nil
。
每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明。
同时声明多个变量,这种因式分解关键字的写法一般用于声明全局变量:
var (
name1 type1
name2 type2
)
2. 声明的同时初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0
。 字符串变量的默认值为空字符串。 布尔型变量默认为false
。 切片、函数、指针变量的默认为nil
。
当然我们也可在声明变量的时候为其指定初始值。接下来介绍几种初始化方法。
1. 先声明,再初始化
var name type //声明
name = value //初始化
多变量可以在同一行进行赋值,如:
var a, b int
var c string
a, b, c = 5, 7, "abc"
多一嘴:
- 如果你想要交换两个变量的值,则可以简单地使用
a, b = b, a
,两个变量的类型必须相同。 - 空白标识符 _ 也被用于抛弃值,如:_, b = 5, 7 中,5被抛弃。
_ 实际上是一个匿名变量,你不能得到它的值。稍后会介绍。
2. 声明的同时初始化
这是变量初始化的标准格式:
var name type = value
3. 声明的同时初始化,并省略类型
Go编译器会根据值自动判定变量类型。
var name = value
类型推导:有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
4. 使用“赋值”进行声明初始化
在函数内部,可以使用更简略的 := 方式声明并初始化变量。
:=是赋值操作符,用它来声明,表明name 是一个变量;
然后 Go 根据给 name 初始化的值 value 来确定 name 变量的类型。
//声明和初始化同时进行
name := value
多变量可以在同一行进行赋值(即使类型不同),如:
//这被称为 并行 或 同时 赋值
a, b, c := 5, 7, "abc"
这是使用变量的首选形式,使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明。
但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值。
实例:
package main
import (
"fmt"
)
// 全局变量m
var m = 100
func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
3. 注意事项
- 声明之后,不可以再次对变量声明(声明只需要一次);
- 如果你在定义变量 a 之前使用它,则会得到编译错误 undefined: a(应该先声明,再使用);
- 如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误 a declared and not used,即声明之后必须使用;
- 但是全局变量是允许 “ 声明但不使用 ” 的。
三. 匿名变量:一种特殊变量
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线 _ 表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)
这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。如:
package main
import "fmt"
func main() {
_,numb,strs := numbers() //只获取函数返回值的后两个
fmt.Println(numb,strs)
}
//一个可以返回多个值的函数
func numbers()(int,int,string){
a , b , c := 1 , 2 , "str"
return a,b,c
}
输出:
2 str
四. 注意事项
-
函数外的每个语句都必须以关键字开始(var、const、func等)
-
:=不能使用在函数外。
-
_ 多用于占位,表示忽略值。
参考链接
- Go 语言变量
最后
以上就是畅快钢笔为你收集整理的【Go】Go 语言的变量与其声明一. 变量与变量名二. 变量的声明与初始化艺术三. 匿名变量:一种特殊变量四. 注意事项参考链接的全部内容,希望文章能够帮你解决【Go】Go 语言的变量与其声明一. 变量与变量名二. 变量的声明与初始化艺术三. 匿名变量:一种特殊变量四. 注意事项参考链接所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复