文章

golang学习记录(3)

变量和常量

go是一种静态语言,变量的类型是在编译阶段确定的。

变量必须先定义后使用

变量必须要有类型

变量类型定下来后不能改变

1、变量

1.1、定义变量的方式

1
2
3
4
5
6
7
// 第一种
var age int (string bool )
age = 10
// 第二种
var age = 10
// 第三种
age := 10

1.2、全局变量和局部变量

全局变量:在函数外部定义的变量,作用域为整个包

局部变量:在函数内部定义的变量,作用域为函数内部

注:全局变量定义之后可以不使用,但是局部变量定义之后必须要使用

1.3、多变量定义

1
2
3
4
5
6
7
8
9
10
11
// 第一种
var user1, user2, user3 string
// 第二种
var user1, user2, user3 = "user1", 1, true
// 第三种
var (
	user1 string
	user2 int
	user3 bool
)

1.4、注意事项

1、变量必须事先定义 2、公式静态语言,要求变量类型和赋值类型一致 3、变量名不能冲突 4、简介变量定义不能作为全局变量(age := 1) 5、变量有零值,也就是默认值

1
2
3
var age int //age默认为0
var name string //name默认为""
var isOk bool //isOk默认为false

6、全局变量定义之后可以不使用,但是局部变量定义之后必须要使用,否则会报错

2、常量

常量,是在定义的时候就指定的值,不能修改

在go语言中,常量定义的时候尽量全部大写,便于区分

2.1、定义常量的方式

1
2
3
4
5
// 第一种
const PI float32 = 3.1415926 //显示定义
const PI = 3.1415926 //隐式定义
// 之后PI不能改变
PI = 3.1415926 //报错

2.2、多变量定义

变量在成组进行定义是也有多种方式

1
2
3
4
5
const(
	PI float32 = 3.1415926
	PI2 = 'a'
	PI3 = 3
)

特别的:

1
2
3
4
5
6
7
cosnt(
    x int  = 1p
    y
    s = 'a'
    z
    m
)

go

2.3、注意事项

1、常量类型只能是bool、数值和字符串 2、常量没有强制使用的要求,定义之后可以选择不使用 3、显示指定类型的时候,必须保证常量左右值类型一致

3、iota

一种能够被编译器修改的特殊常量

3.1、iota的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//写法1
const (
    ERR0 = iota
    ERR1 = iota
    ERR2 = iota
    ERR3 = iota
    ERR4 = iota
)
// 输出为:0、1、2、3、4
//写法2
const (
    ERR0 = iota
    ERR1
    ERR2
    ERR3
    ERR4
)
// 输出也为0、1、2、3、4

有关iota的计数器特性,如下图 go

go

iota内部有同一个计数器,自己递增,不受赋值的影响
出现新的const时,iota会归零

3.2、注意事项

1、如果中断了iota必须显示恢复,后续会自动递增 2、iota默认类型是int型 3、iota能简化const类型的定义 4、每次出现新的const之后iota会归0

4、匿名变量

用下划线进行标识,不使用不会报错

如:var _ int = 10

在go语言中,匿名变量是指没有名字的变量。匿名变量在函数中经常被用作占位符,用于接收函数返回的多个值中的一部分。 下面是一个应用场景的举例: go

5、变量的作用域

5.1、全局变量

在函数外部定义的变量,作用域为整个包。

5.2、局部变量

在函数内部定义的变量,作用域为函数内部。

有严格限制,在使用的时候需要注意。

本文由作者按照 CC BY 4.0 进行授权