var一个变量不能不用,不用会报错 声明一个变量,例如int型,如果不赋予变量值则默认为0 而且输出(Println)“a=”,a时,不用=号多加空格,输出值时自带空格(好评) printf的%T是取类型,%d是取整值,%g是取浮点数值,%s是取String内容。 短变量声明(:=)不能再函数外使用
常量的声明与变量类似,只不过是使用 const 关键字。 常量可以是字符、字符串、布尔值或数值。 常量不能用 := (短声明)语法声明。
一般int表示整形的宽度根据电脑的位数而定,32即32,64即64 一般有符号、无符号都是直接int、uint,除非特殊才int8、int16、int32..... float只有32,64。 32只提供大约6个十进制数(也就是表示小数点后6位)的精度,64同理,大约提供15个十进制数。 数值类型零值为 0, 布尔类型零值为 false, 字符串零值为 ""(空字符串)。
类型转换 与 C 不同的是,Go 在不同类型的项之间赋值时需要显式转换。 例如: var i int = 42 var f float64 = float64(i) 或 i := 42 f := float64(i)
在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。 例如: var i int j := i //j这样也会是int型
func main() {
//方法一:声明一个变量,默认为0
var a int
fmt.Println("a =", a)
fmt.Printf("a的类型为:%T\n", a) //%T是取a的类型
fmt.Println("")
//方法二:声明一个变量并初始化一个值
var b int = 200
fmt.Printf("b = %d\n", b) //%d是取b的值
fmt.Printf("b的类型为:%T\n", b)
fmt.Println("")
//方法三:初始化时,不声明类型,由Go语言自己匹配类
var c = "String类型定义"
fmt.Printf("c = %s\n", c) //%s是取c的字符串(和直接输出也没什么差别)
fmt.Printf("c的类型为:%T\n", c)
fmt.Println("")
//方法四:短声明 := (一般使用这个,简洁、快捷、便利)
e := 100
fmt.Printf("e = %d\n", e)
fmt.Printf("e的类型为%T\n", e)
fmt.Println("")
f := "短声明定义String变量"
fmt.Printf("f的类型为%T,f = %s\n", f, f)
fmt.Println("")
//多变量声明
var xx, yy int = 100, 200
var kk, pp = 300, "多个变量声明String"
fmt.Printf("xx = %d, yy = %d, kk = %d, pp = %s\n", xx, yy, kk, pp)
fmt.Printf("xx的类型为%T, yy的类型为%T, kk的类型为%T, pp的类型为%T\n", xx, yy, kk, pp)
fmt.Println("")
//另一种多变量声明
var (
nn int = 10
ss = "另一种多变量声明方式"
)
fmt.Printf("nn = %d, ss = %s\n", nn, ss)
fmt.Printf("nn的类型为%T, ss的类型为%T\n", nn, ss)
fmt.Println("")
//常量定义
const beijing = 0
const (
huizhou = 1
shenzhen = 2
)
fmt.Printf("huizhou = %d, shenzhen = %d\n", huizhou, shenzhen)
fmt.Printf("huizhou的类型为%T, shenzhen的类型为%T\n", huizhou, shenzhen)
fmt.Println("")
//iota常量计数器(枚举)
const (
tianjing = iota // 甚至可以10 * iota来改变枚举步数
shanghai
shandong
)
fmt.Printf("tianjing = %d, shanghai = %d, shandong = %d\n", tianjing, shanghai, shandong)
}