02-变量

1、变量声明

Go 变量声明的三种方式:

1
2
3
var a int		    // 声明一个变量,默认为0
var b = 10 // 声明并初始化,且自动推导类型
c := 20 // 初始化,且自动推导

注意:

  • :=定义变量只能在函数内部使用,所以经常用var定义全局变量
  • Go 对已经声明但未使用的变量会在编译阶段报错:** not used
  • Go 中的标识符以字母或者下划线开头,大小写敏感
  • Go 推荐使用驼峰命名

2、多变量声明

1
2
3
4
5
6
7
8
var a,b string
var a1,b1 string = "哼","哈"
var a2,b2 int = 1,2 //类型可以直接省略
c,d := 1,2
var(
e int
f bool
)

3、变量值互换

1
2
m,n = n,m		//变量值互换
temp,_ = m,n //匿名变量:变量值互换,且丢弃变量n

4、_丢弃变量

_是个特殊的变量名,任何赋予它的值都会被丢弃。该变量不占用命名空间,也不会分配内存。

1
_, b := 34, 35      //将值`35`赋予`b`,并同时丢弃`34`:

5、:= 声明的注意事项

下面是正确的代码示例:

1
2
in, err := os.Open(file)
out, err := os.Create(file) // err 已经在上方定义,此处的 err 其实是赋值

但是如果在第二行赋值的变量名全部和第一行一致,则编译不通过:

1
2
in, err := os.Open(file)
in, err := os.Create(file) // 即 := 必须确保至少有一个变量是用于声明

:=只有对已经在同级词法域声明过的变量才和赋值操作语句等价,如果变量是在外部词法域声明的,那么:=将会在当前词法域重新声明一个新的变量。

6、多数据分组书写

Go 可以使用该方式声明多个数据:

1
2
3
4
5
6
7
8
9
10
11
const(
i = 100
pi = 3.1415
prefix = "Go_"
)

var(
i int
pi float32
prefix string
)

02-变量
https://flepeng.github.io/021-Go-31-Go-基础-02-变量/
作者
Lepeng
发布于
2024年12月2日
许可协议