变量
1、变量声明
1.1
var 变量名 变量类型 变量命名遵循小驼峰
1.2基本类型
bool、String、int、int8(byte)、int16、int32(rune)、int64、uint、uint8、uint16、uint32、uint64、float32、float64、complex64、complex128
所有内存在go里面都是初始化的
1.3 不指明变量类型
var level =1
编译时自动推到类型
var level = 1
func main() {
fmt.Printf("%T", level)
}
结果:int
1.4 批量格式
var(
a int
b string
c float32
)
var (
a int
b string
c float32
)
func main() {
fmt.Printf("a=%d, b=%s, c=%f", a, b, c)
}
1.5 简短格式
i:=1
- 定义变量,同时显示初始化
- 不能提供数据类型
- 只能在函数内部
func main() {
i := 1
fmt.Printf("%d", i)
}
2、初始化变量
var level int = 1
level:=1
//多次变量初始化出错
func main() {
var level int = 1
level := 2
fmt.Printf("%d", level)
}
//特例:在多个短变量的声明和赋值中,至少有一个新声明的变量出现在左值中,几遍其他变量名可能是重复声明的,编译器也不会报错
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn1, err := net.Dial("tcp", "127.0.0.1:8080")
fmt.Print(conn)
fmt.Print(err)
fmt.Print(conn1)
}
3、 匿名变量
使用多重赋值
,如果不需要在左值中接收变量,可以使用匿名变量
- 匿名变量使用"_"下划线表示
- 匿名变量不占用内存空间,也不会分配内存,匿名变量可以重复声明使用
func main() {
conn, _ := net.Dial("tcp", "127.0.0.1:8080")
fmt.Print(conn)
}