基本数据类型
Go语言是一种静态类型的编程语言,在Go编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。编译器在进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。
布尔型
布尔型的值只可以是常量true或者false。
默认值是false。
func main() {
var b1 bool
var b2 bool
b1 = true
b2 = false
fmt.Printf("%T,%t\n", b1, b1)
fmt.Printf("%T,%t\n", b2, b2)
}
/*
bool,true
bool,false
*/
数字类型
整型int和浮点型float32、float64,Go语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
Go也有基于架构的类型,例如:unit无符号、int有符号
func main() {
var i1 int8
var i2 uint8
i1, i2 = 100, 200
fmt.Println(i1)
fmt.Println(i2)
}
浮点型,Go语言中默认是float64
func main() {
var money float64 = 3.14
fmt.Printf("%T,%f\n", money, money) //默认6位小数打印,四舍五入
}
常见的别名
字符与字符串
func main() {
var str string
str = "Hello,Go"
fmt.Printf("%T,%s\n", str, str)
v1 := 'A'
v2 := "A"
fmt.Printf("%T,%s\n", v1, v1)
fmt.Printf("%T,%s\n", v2, v2)
}
/*
string,Hello,Go
int32,%!s(int32=65) //可以看到单引号定义的变量实际是int32类型,实际上打印的是对应ASCII表中的十进制值
string,A
*/
func main() {
// 拼接
fmt.Printf("aaa" + "bbb\n")
// 转义
fmt.Printf("hello\"bbb\n")
// 换行
fmt.Printf("hello\nbbb")
// Tab
fmt.Printf("hello\tbbb")
}
/*
aaabbb
hello"bbb
hello
bbb
hello bbb
*/
数据类型的转换
在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明。
类型B的值 = 类型B(类型A的值)
func main() {
a := 3.14
b := int(a)
fmt.Println(a)
fmt.Println(b)
}
/*
3.14
3 //直接舍去小数
*/
尽量小转大,因为大转小会造成精度丢失。