go语言的变量与常量

go的变量定义了必须使用,不然无法通过编译
全局变量定义后可以不使用,如果全局与局部同名,采用就近原则
如果是简洁模式定义,左边至少应该包括一个新变量

变量的定义

变量从繁到简,总共三种方式
var globalVar = "全局变量无法使用简洁模式定义, 但可以定义了不使用"

func main() {

// 先定义再赋值
var i int;
i = 1
// 定义变量, 定义数据类型, 赋值
var i2 int = 2
// 定义变量, 赋值, 数据类型自动推断
var i3= 3
// 省略变量, 数据类型定义, 数据类型自动推断
i4 := 4
// 定义多个变量
i5, i6, i7 := 5, 6, "i7"
// 会报错, 因为没有定义新的变量
//i5, i6 := 5, 6
//i6, i7 := 6, "i7"
// 表达式中定义了新的i8, 所以不会报错, 并且还给i7赋值了新值(i77)
i7, i8 := "i77", "i8"

fmt.Println(i, i2, i3, i4, i5, i6, i7, i8)

}

变量的零值

int  -> 0
string -> ""
bool  -> false
float  -> 0.0

匿名变量

不想使用的变量可以丢给匿名变量
func main() {

// 赋值给匿名变量, 字符串在go中可以用双引号("")也可以用(``)
i1, _ := 1, `赋值给匿名变量的值`

fmt.Println(i1)

}

go变量交换

其他语言交换需要中间变量,golang不需要
func main() {

a, b := "a", "b"
// 变量直接交换
a, b = b, a

fmt.Println(fmt.Sprintf("a=%s, b=%s", a, b))

}

console:
a=b, b=a