变量
变量是可以变的,先给变量初始化为某个值,后来可以修改其值
var a //错的:因为没有类型
var a int //对的
var a=12 //对的
-----------------------------------------
//批量声明
var a,b 类型 //对的,这种写法只能表示a和b是同种类型
var a,b int //对的,a和b都是int类型,默认值0
var a int,b int //错误的,逗号的写法是表示两个元素具有相同的类型
var a,b=0 //错误了,因为0只给了a
var (
a int
b float32
)//对的
-----------------------------------------
a=12 //错误:因为变量必须先声明再使用
var a=12 //对的
常量
常量在声明之后,这个值就不能改变了
常量:
const a=val
1.不能改
2.必须在声明的同时赋值
我们先看看变量的值可不可以被修改:
我们现在来看看常量:
常量的值不能被修改
变量不需要在声明的时候进行初始化:
常量必须在声明时进行初始化:
因为常量不能变,所以只能声明并且初始化
赋值
Golang有2种赋值
1.普通赋值 a=5
2.声明赋值 a:=5//赋值的同时顺便声明了
//这2个写法是等价的,不能混用 var a:=5
var a=5
a:=5
声明赋值的用途:
1.方便
2.部分语法结构不允许var(比如说嵌套if、for)
下面这种写法是错误的:不能声明2个a
同理。下面这个写法也是错误的
解构赋值
解构赋值——一次性对多个变量赋值
解构赋值——一次性对多个变量赋值
我们可以这么写:
a,b=12,5
var a,b=12,5
var a,b=12,"sss"//不要求是同一个类型
const a,b=1,2
a,b:=12,5
上面这种写法太麻烦了,我们可以这样写:
我们还可以像下面这些写法这么玩:
利用解构赋值交换两个变量的值
a,b=b,a
无用变量
无用变量——go很严格
特殊的变量,作用丢弃数据但是不报错
编译报错,说b声明了但是没有使用
但是,有的时候,我们确实要声明2个变量,但是后面那个变量确实又不用
我们应该怎么办?
下划线_表示这是1个变量,但是我们不使用它,意思是把这个变量值抛弃掉,但是不要给我报错
特殊的变量,作用丢弃数据但是不报错
而且下划线_这个变量名不怕重复,因为这本身就是一个特殊的变量名
我们也可以就要第3个变量,其他都不要
Scanf有2个返回值,第一个返回值是返回用户输入的有效元素的个数
第二个返回值是错误的信息。
如果我们用err接收了第二个返回值,就得使用了。
但是我们不需要第二个返回值,所以我们用无用变量接收它就可以了。