package main
import (
"fmt" "math")func main() {
// 1. 定义变量名age,不初始化,使用对应类型的默认值 var age int fmt.Println("My age is", age)// 2. 给变量赋值 age = 29 fmt.Println("My age is", age) age = 50 fmt.Println("My age is", age)// 3. 定义变量时初始化值 var height int = 160 fmt.Println("My height is", height)// 4. 变量类型推断: 定义变量时不用明确指定变量类型,而是根据初始化值推断变量类型 var weight = 130 fmt.Println("My weight is", weight)// 5. 可以同时定义多个变量值 // 同时定义多个变量并初始化值 var myage, myheight int = 29, 160 fmt.Println("My age is", myage, ", and my height is", myheight)// 5.1 如果在同时定义多个变量时初始化值,可以不用明确指定变量类型,根据变量值推断变量类型
var hisage, hisheight = 29, 170 fmt.Println("His age is", hisage, ", and his height is", hisheight)// 5.2. 当然,也可以同时在定义变量之后再进行赋值 var herage, herheight int herage = 30 herheight = 170 fmt.Println("Her age is", herage, ", and her height is", herheight)// 5.3. 另外,可以同时定义多个变量值,并赋不同类型的值 var ( name_ = "cccc" age_ = 29 height_ int ) fmt.Println("name_ is", name_, ", age_ is", age_, ", height_ is", height_)// 6. go语言还提供了一种简洁的变量定义方式,通过操作符":="实现// 在这种方式下,定义变量时不能使用var符号: 要求,必须同时对所有定义变量赋值, 否则报错 _name, _age := "dddd", 31 fmt.Println("_name is", _name, ",_age is", _age)// 如下定义报错:未同时对定义的多个变量赋值__name, __age := "eeeee"fmt.Println("__name is", __name, ", __age is", __age)// 另外,在这种方式下,操作符":="左边的变量:要求至少有一个是最新定义的 i, j := 10, 11 fmt.Println("i=", i, ",j=", j) j, k := 12, 13 // 操作符左边的k变量是最新声明的,满足"至少有一个变量时新定义的"条件 fmt.Println("j=", j, ",k=", k)j, k := 14, 15 // 操作符左边的变量都是已经定义过的,不满足"至少有一个变量时新定义的"条件,运行时报错fmt.Println("j=", j, ",k=", k)// 7. 变量初始化值还可以是表达式值 a, b := 10.0, 11.1 c := math.Min(a, b) fmt.Println("a=", a, ", b=", b, ", and c=", c)// 8. 变量一但被赋值,类型就确定了,不能再赋值其他类型的值 ok := 20 fmt.Println("ok is", ok)ok = "Hello" // 变量ok的类型一旦赋值之后就确定,不能再赋值其他类型的值了 fmt.Println("学习GO语言变量定义完毕!")}