1. 什么是变量?
作为软件开发人员,不能使用何种开发语言,变量都是程序的基本组成单位之一,如何理解变量?
-
从日常生活的角度理解,变量其实就和人的名字很类似,代表你这个人,别人通过名字就能找到你
-
从计算机的角度理解,变量其实就是计算机内存空间的一个数据的表示
2. 变量入门案例
package main
import "fmt"
func main() {
// 声明一个变量 a
var a int
// 给变量 a 赋值
a = 10
// 使用变量
fmt.Println("a = ", a)
}
2.1 变量声明、初始化和赋值
2.2.1 声明变量语法
var 变量名 数据类型
2.2.2 初始化变量
变量声明的同时给变量一个初始值
var a int = 6
- 如果声明变量时就赋值,可以省略数据类型
var a = 6
2.2.3 变量赋值
// 声明变量 i,默认值是 0
var i int
// 给变量 i 赋值
i = 12
3. Go 中变量使用的三种方式
- 声明变量后若不赋值,则使用默认值
func main() {
// int 类型的默认值是 0
var i int
fmt.Println("i = ", i) // i = 0
}
- 类型推导,根据值自动判断变量类型
func main() {
var f = 68.87
fmt.Println("f = ", f) // f = 68.87,浮点类型变量
}
- 省略
var
关键字
func main() {
// : 不能省略,否则编译错误
age := 32
fmt.Println("age = ", age) // age = 32
b := 0
c := 0.0
// b的类型:int, c的类型:float64 ;需要注意整数和浮点型变量类型推导时默认值的不同
fmt.Printf("b的类型:%v,c的类型:%v\n",reflect.TypeOf(b),reflect.TypeOf(c))
}
4. 多变量声明
4.1 方式一
func main() {
var n1, n2, n3 int
n1 = 3
n2 = 4
n3 = 5
// n1= 3 n2= 4 n3= 5
fmt.Println("n1=",n1,"n2=",n2,"n3=",n3)
}
4.2 方式二
声明变量的同时进行赋值
func main() {
var a1, name, a3 = 1, "Jack", 100
// a1= 1 name= Jack a3= 100
fmt.Println("a1=",a1,"name=",name,"a3=",a3)
}
4.3 方式三
类型推导,省略关键字 var
func main() {
b1, name1, b3 := 1, "Tom", 100
// b1= 1 name1= Tom b3= 100
fmt.Println("b1=",b1,"name1=",name1,"b3=",b3)
}
5. 变量使用注意事项
- 在同一作用域(函数或者代码块内),同类型变量可以被重复赋值
func main() {
var f1 = 1
f1 = 2
f1 = 3
fmt.Println("f1=",f1)
}
- 在同一作用域(函数或者代码块内),变量名不能重复
- 变量如果没有被赋值,编译器会使用默认值,比如 int 的默认值 0 ;string 的默认值空串;浮点数的默认值 0
6. Go中的变量命令规范
6.1 严格区分大小写
var a int
var A int
// 变量 a 和 变量 A 表示的是两个不同的变量
6.2 不可用使用Go语言内置的关键字、数据类型和内嵌函数作为变量名称
- 关键字
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrought | if | range | type |
continue | for | import | return | var |
- 内置标识符 | append | bool | byte | cap | close | complex | | --- | --- |---|---|---|---| | complex64 | complex128 | unit16 | copy | false | float32 | | float64 | imag | int | int8 | int16 | unit32 | | int32 | int64 | iota | len | make | new | | nil | panic | uint64 | print | println | real | | recover | string | true| unit | unit8 | uintprt |
6.3 变量名、函数名、常量名采用驼峰命名
6.4 慎重使用下划线_
,在 Go 中它被称为空标识符
- 标准使用方式是被用作占位符
// err 如果转换过程中有错误信息,将错误信息打印出来
b , err = strconv.ParseBool(str)
fmt.Printf("b=%v,err=%v\n",b,err)
// 忽略方法返回的错误信息
b , _ = strconv.ParseBool(str2)
fmt.Printf("b=%v,err=%v\n",b)
6.4 不能使用数字开头作为变量名称
var hello int // 正确
var hello12 int // 正确
var hello_12 int // 正确
var 12hello int // 错误
var _hello int // 正确
var _ int // 错误
var Hello int // 正确
var hello-world int // 错误
6.5 package的命名和访问权限
- 保持package 的名字和目录保持一致,不要和标准库冲突
- 如果变量、函数名、常量名首字母大写,则可以被其它包使用;如果首字母小写,则只能在本包中使用(首字母大写是公开的,首字母小写是私有的)