整型
package mainimport "fmt"/*
整型 浮点型 复数
整型: int8 int16 int32 int64 int --有符号整型(第一位表示符号正负)int 看操作系统unit8 uint16 uint32 uint --无符号位(都是正整数)uintptr 无符号整数类型指针
*/var a int8
var b int16func main() {// a = 200//int8最大127,200大于127// fmt.Println(a)b = 20fmt.Println(b)// a = 10// fmt.Println(b - a)//即使都是整型,但是一个是int8,一个是int16,不能相互计算
}
package mainimport "fmt"var x uint8
var y uint8func main() {//无符号位的整数 注意计算溢出x = 1y = 2fmt.Println(x - y) //输出得到255--》溢出了
}
package mainimport "fmt"func main() {//int类型 位数看操作系统var x intx = 100fmt.Println(x, unsafe.Sizeof(x))//8字节表示8*8,64位var str1 stringfmt.Println(unsafe.Sizeof(str1))
}
package mainimport "fmt"func main() {//进制表示bin_num1 := 0b11//二进制数,以0b开头 数字只包含0-1oct_num1 := 0o11//八进制数,以0o开头 数字只包含0-7hex_num1 := 0x1a//十六进制数,以0x开头 数字只包含0-9 a-ffmt.Println(bin_num1, oct_num1, hex_num1)fmt.Printf("%T", bin_num1)//查看数据类型
}
浮点型
package mainimport "fmt"/*
浮点型: float32 float64 不精确--》二进制存储小数位
float32 三部分组成 符号(1位) 指数(8位) 尾数(23位)
float64 三部分组成 符号(1位) 指数(11位) 尾数(52位)
*/func main() {//浮点数是不精确的//如果要更精确--》使用float64 还要更精确--》使用decimal库var f1 float32var f2 float32var f3 float32f1 = 0.1111111f2 = 0.2222222f3 = 0.3333333if f1+f2 == f3 {fmt.Println("f1 + f2 == f3")} else {fmt.Println("f1 + f2 != f3") //输出不相等}
}
复数
package mainimport "fmt"/*
复数:complex64 complex128
*/func main() {//复数var z1 complex64 = 5 + 4ifmt.Println(z1)
}
布尔类型
package mainimport "fmt"func main() {//布尔类型 -- true false 常常用在判断中var x boolfmt.Println(x) //默认值是false
}
字符
package mainimport ("fmt""unicode/utf8"
)/*
字符类型 byte rune编码 人类语言--机器语言 映射
ascii -- 英文字符
unicode -- 万国码 utf8 gbk是unicode具体体现,实现存入磁盘byte -- unit8 --》英文
runne -- unit32 --》中文字符串类型 string 双引号包裹
*/
func main() {var c1 bytec1 = 97fmt.Println(c1, string(c1)) //string()将字符类型转化为文字显示c2 := '中' //用单引号引起来的单个字符串 得到的是字节码fmt.Println(c2)fmt.Printf("%T\n", c2)// c3 := '中国'//错误,单引号只能表示一个字符// fmt.Println(c3)
}
字符串
package mainimport ("fmt""unicode/utf8"
)/*
字符类型 byte rune编码 人类语言--机器语言 映射
ascii -- 英文字符
unicode -- 万国码 utf8 gbk是unicode具体体现,实现存入磁盘byte -- unit8 --》英文
runne -- unit32 --》中文字符串类型 string 双引号包裹
*/
func main() {var str3 stringstr3 = "hello"//统计字符串的长度 --len()函数 统计的是字节数,不是字符数fmt.Println("str3的长度是:", len(str3))str4 := "hello,世界" //字符串中包含中文字符fmt.Println("str4的长度是:", len(str4)) //len()统计的是字节数count := utf8.RuneCountInString(str4) //统计字符数fmt.Println("str4的字符数是:", count) //统计的是字符数//字符串的截取[start:end] 按字节截取str7 := "abcxyz,hello"fmt.Println(str7[0:5])fmt.Println(str7[:5])fmt.Println(str7[4:])str8 := "中国,你好"fmt.Println(str8[:2]) //输出的是字节数,包含中文字符的字节数
}
转义字符
package mainimport ("fmt""unicode/utf8"
)/*
字符类型 byte rune编码 人类语言--机器语言 映射
ascii -- 英文字符
unicode -- 万国码 utf8 gbk是unicode具体体现,实现存入磁盘byte -- unit8 --》英文
runne -- unit32 --》中文字符串类型 string 双引号包裹
*/
func main() {//转义字符 -- 含有特殊含义的字符/*转义字符 \n 换行符 \t 制表符 \\ 反斜杠 \' 单引号 \" 双引号*/str5 := "a\"b"fmt.Println(str5) //输出a"b//字符串原样输出str6 := `a"b` //使用反引号包裹字符串,原样输出fmt.Println(str6) //输出a"b}