天津市住房和城乡建设厅官方网站网站链接提交收录
文章目录
- 1 Go中的变量
- 2 声明一个变量
- 3 声明变量并初始化
- 4 变量推断
- 5 声明多个变量
- 5.1 多个变量相同类型
- 5.2 多个变量不同类型
- 6 简短声明
- 7 Go语言变量不能把一种类型赋值给其他类型
1 Go中的变量
Go中变量指定了某存储单元的名称,该存储单元会存储特定类型的值,在Go中,有多种语法用于声明变量。
2 声明一个变量
语法
//关键字 变量名 变量类型
var name type
测试
package mainimport "fmt"func main() {var age int // 定义一个int类型的变量age = 12 // 变量赋值var name string // 定义一个string类型的变量name = "张三" // 变量赋值fmt.Println("姓名:", name, "年龄:", age) // 姓名: 张三 年龄: 12
}
如果变量声明后没有进行初始化,Go会默认将其赋值为0
package mainimport "fmt"func main() {//var age int//age = 12//var name string//name = "张三"//fmt.Println("姓名:", name, "年龄:", age) // 姓名: 张三 年龄: 12var count intfmt.Println(count) // 0var str stringfmt.Println(str) // 空var avg float32fmt.Println(avg) // 0
}
3 声明变量并初始化
语法
//关键字 变量名 变量类型 = 初始化值
var name type = value
测试
package mainimport "fmt"func main() {// 声明变量并初始化var age int = 10fmt.Println(age)// 修改变量值age = 11fmt.Println("我长大了:", age)
}
4 变量推断
如果定义的变量有初始化值,则不用定义变量类型,Go会自动推断变量的类型
语法
// 关键字 变量名 = 初始化值
var age = 11
// 省略了age变量的类型int
测试
package mainimport "fmt"func main() {var age = 10fmt.Println("age is :", age) // age is : 10
}
5 声明多个变量
5.1 多个变量相同类型
语法
var a,b int // 声明变量
a = 1
b = 2
测试
package mainimport "fmt"func main() {var height, weigth intheight = 180weigth = 60fmt.Println("身高:", height, "cm", "体重:", weigth, "kg") // 身高: 180 cm 体重: 60 kg}
5.2 多个变量不同类型
语法
var (name1 type1name2 type2
)
测试
package mainimport "fmt"func main() {var (name stringage intheight float32weight float32)name = "张三丰"age = 104height = 175.8weight = 69.6fmt.Println("姓名:", name, "年龄:", age, "身高:", height, "体重:", weight)// 姓名: 张三丰 年龄: 104 身高: 175.8 体重: 69.6
}
6 简短声明
Go语言支持对未初始化的变量进行简短声明。
语法
// 变量名 := 初始化值
name := initialvalue
测试
package mainimport "fmt"func main() {age := 11fmt.Println("age is :", age) // age is : 11
}
:= 符号左边的值必须都有初始化值,否则报错
package mainimport "fmt"func main() {name, age := "张三丰" // 报错 assignment mismatch: 2 variables but 1 valuefmt.Println("name is :", name)
}
:= 符号左边的变量个数与右边的初始化值的个数一定要相同
package mainimport "fmt"func main() {name, age := "张三丰", 11fmt.Println("name is :", name, "age is :", age) // name is : 张三丰 age is : 11
}
简短声明:=左侧必须包含一个未初始化的变量
package mainimport "fmt"func main() {var a = 10a, b := 11, 12 // 因为b是未初始化的,所以不报错fmt.Println(a, b) // 11,12
}
如果简短声明:=左侧都是初始化的,则会报错
package mainimport "fmt"func main() {var a, b = 10, 11a, b := 11, 12 // no new variables on left side of :=fmt.Println(a, b)
}
go给出的报错信息还是很清晰的
7 Go语言变量不能把一种类型赋值给其他类型
Go是强类型语言,不能将类型a的变量赋值为类型b的值
package mainimport "fmt"func main() {a, b := 11, 12a = "kevin" // cannot use "kevin" (untyped string constant) as int value in assignmentfmt.Println(a, b)
}