1、变量概念
变量概念源于数学,在计算机中表示用来存储值或者存储计算结果的抽象概念。
变量本质上是一种对内存地址的引用,让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字进行操作。
2、变量的声明
和C语言一样,Go语言也是通过关键字 var进行声明变量,不同的是变量名放在类型的前面,具体格式如下:
var 变量名 数据类型
例如:
package main
import "fmt"
func main(){
var x int //声明变量并赋值后,在后面的必须使用,不然会报错
var y int
var b bool
fmt.Println(x) //0
fmt.Println(y) //""
fmt.Println(z) //false
}
声明未赋值,系统默认赋这些类型零值。也就是说变量的值默认为 false。
Int 类型,当 为 0 的时候表示 false。
String 类型,当为 "" 的时候表示false
Bool 类型,当为 fasle的时候表示 false
3、声明多个变量
如果声明多个变量,可以进行简写
// 声明多个相同类型变量
var x, y int
// 声明多个不同的类型变量
var (
x int
y string
z bool
)
4、变量赋值
// 先声明再赋值
var x int
x = 100
fmt.Println(x) //必须被使用,不然会报错
// 直接声明赋值
var name = "shuaigaogao" //编译器会自动识别数据类型
fmt.Println(name)
// 声明赋值精简版
name := "hello world"
fmt.Println(name)
- 编译器会自动根据右值类型推断出左值的对应类型,等同于var s = “hello word!”。
- 该变量之前不能声明,否则重复声明
// 赋值多个变量
var a,b int
a,b = 10,20
fmt.Println(a,b)
// 一行赋值多个变量
var a,b,c = 100, "hello world", true
fmt.Println(a,b,b)
// 一行赋值多个变量,推荐
name,age := "hello world", 22
fmt.Println(name,age)
// 多行赋值多个变量
var (
a = 100
b = "hello world"
c = true
)
fmt.Println(a,b,c)
5、匿名函数
匿名变量即是没有命名的变量,在使用多重赋值时,如果你想忽略某个值,可以使用匿名变量(anonymous variable)。匿名变量用一个 下划线(_)表示。
// 正常变量赋值
a,b,c := 4,5,6
fmt.Println(a,b,c)
// 如果只想接受最后一个值,可以对前面两个变量匿名
_,_,x = 4,5,6 // 匿名变量是不可以被使用的,因为压根都不会分配内存给它。
fmt.Println(x)
- 匿名变量不占用命名空间,不会分配内存
- 让代码非常清晰,基本上屏蔽掉了可能混淆代码阅读者视线的内容,从而大幅降低沟通的复杂度和代码维护的难度。
6、变量的命名规范
变量命名是需要遵循一定的语法规范,否则编译器不会通过。
1. 变量名称必须由数字、字母、下划线组成。
2. 标识符开头不能是数字 eg:错误 1a := 10 正确:a1 := 10
3. 标识符不能是保留字 或 关键字。
4. 建议使用驼峰标式命名,当名字有几个单词组成的时优先使用大小写分割 eg: companyName := "h"
5. 变量名尽量做到见名如意。
6. 变量名区分大小写。 eg: a := 10 这个 a 和 A 不是同一个变量。
go语言中有 25 个关键字,是不能用于自定义变量名:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
还有30多个预定义的名字,用于内建的常量、类型和函数。
//内置常量
true false iota nil
//内建类型
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
// 内置函数:
make len cap new append copy close delete
complex real imag
panic recover