Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存
基本格式
#声明变量的一般形式是使用 var 关键字
var name type
批量格式
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
简短格式
除 var 关键字外,还可使用更加简短的变量定义和初始化语法。
名字 := 表达式
需要注意的是,简短模式(short variable declaration)有以下限制:
定义变量,同时显式初始化。
不能提供数据类型。
只能用在函数内部。
func main() {
x:=100
a,s:=1, "abc"
}
因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化。var 形式的声明语句往往是用于需要显式指定变量类型地方,或者因为变量稍后会被重新赋值而初始值无关紧要的地方。
Go语言的基本类型有:
- bool
- string
- int、int8、int16、int32、int64
- uint、uint8、uint16、uint32、uint64、uintptr
- byte // uint8 的别名
- rune // int32 的别名 代表一个 Unicode 码
- float32、float64
- complex64、complex128
//声明表里并打印 b为字符串,默认为空 所有看不见
package main
import "fmt"
func main() {
var a int
var b string
var c float32
var d []int //切片
var e [3]int //数组
fmt.Println(a,b,c,d);
}
//格式化输出
package main
import "fmt"
func main() {
var a int
var b string
var c float32
var d []int
// fmt.Println(a,b,c,d);
// T 是代表类型type,v代表value值的意思,q是引用的意思
fmt.Printf("%T,%v \n",a,a);
fmt.Printf("%T,%v \n",b,b);
fmt.Printf("%T,%q \n",b,b);
fmt.Printf("%T,%v \n",c,c);
fmt.Printf("%T,%v \n",d,d);
}
批量复制给变量
package main
import "fmt"
func main() {
//批量声明变量
var (
a int
b string
c float32
d []int
)
// fmt.Println(a,b,c,d);
// T 是代表类型type,v代表value值的意思,q是引用的意思
fmt.Printf("%T,%v \n",a,a);
fmt.Printf("%T,%v \n",b,b);
fmt.Printf("%T,%q \n",b,b);
fmt.Printf("%T,%v \n",c,c);
fmt.Printf("%T,%v \n",d,d);
}
运行结果一样
初始化默认值
package main
import "fmt"
func main() {
//批量声明变量
var (
a int = 9501
b string = "这是一个测试"
c float32 = 3.1415
d []int
e [3]int
)
// fmt.Println(a,b,c,d);go
// T 是代表类型type,v代表value值的意思,q是引用的意思
fmt.Printf("%T,%v \n",a,a);
fmt.Printf("%T,%v \n",b,b);
fmt.Printf("%T,%q \n",b,b);
fmt.Printf("%T,%v \n",c,c);
fmt.Printf("%T,%v \n",d,d);
fmt.Printf("%T,%v \n",e,e);
fmt.Println(a,b,c,d);
}
package main
import "fmt"
func main() {
//函数体内短变量赋值,两值交换,无需第三个变量
x := 20
y := 30
x,y = y,x
fmt.Println(x,y);
}