- 整数型
- 浮点型
- 复数
- 布尔
- 字符串
整数型
var n1 uint8 = 2var n2 uint16 = 2var n3 uint32 = 2var n4 uint64 = 2var n5 uint = 2var n6 int8 = 2var n7 int16 = 2var n8 int32 = 2var n9 int64 = 2var n10 int = 2
- 默认的数字定义类型是 int 类型
- 带个 u 就是无符号,只能存正整数
- 后面的数字就是 2 进制的位数
- uint8 还有一个别名 byte, 一个字节=8 个 bit 位
- int 类型的大小取决于所使用的平台
怎么看 uintX 最大位数
例:
var u8 uint8 = 255八位二进制最小:
00000000=0
八位二进制最小:
11111111=2^8-1=255
浮点型
- float32
- float64
如果没有显式声明,则默认是 float64
字符型
关键字''
- 单字节:byte
- 多字节:rune
// 单字节 var a byte = 'a' // ascii里面的字符 fmt.Printf("%c %d\n", a, a) var a1 uint8 = 97 fmt.Printf("%c %d\n", a1, a1)a 97a 97type byte = uint8 var z rune = '中' fmt.Printf("%c %d\n", z, z)中 20013
字符串
关键字""
一些常用的转义字符
fmt.Println("hello\tworld") // 制表符 fmt.Println("hello\nworld") // 回车 fmt.Println("\"hello\"world") // 双引号 fmt.Println("hello\rworld") // 回到行首 fmt.Println("C:\\pprof\\main.exe") // 反斜杠hello worldhelloworld"hello"worldworldC:\pprof\main.exe多行字符
··
fmt.Println(`hello
world`)hello
world布尔
布尔变量默认为 false
Go 中不允许将整形强制转换为布尔型
布尔无法参与数值运算,也无法与其他类型进行转换
零值问题
基本数据类型只声明不赋值
那么这个变量的值就是对应类型的零值,例如 int 就是 0,bool 就是 false,字符串就是““
var a1 int var a2 float32 var a3 string var a4 bool
fmt.Printf("%#v\n", a1) fmt.Printf("%#v\n", a2) fmt.Printf("%#v\n", a3) fmt.Printf("%#v\n", a4)00""false数组
var nameList [3]string = [3]string{"张三", "李四", "王五"}Go 不支持逆向索引
字符长度的方法
fmt.Println(len(nameList))不能添加元素
切片
var nameList []string nameList = append(nameList, "张三") nameList = append(nameList, "李四")只能同类型
初始化的问题
var nameList []string fmt.Println(nameList) fmt.Println(nameList == nil) //ture var nameList []string = []string{} fmt.Println(nameList == nil) //false var nameList []string = []string{} var nameList1 = []string{} nameList2 := []string{} nameList = make([]string, 0)// 创建全是0的切片ling := make([]int, 3)切片的排序
升序
var intList []int = []int{4, 87, 54, 1, 25}sort.Ints(intList)fmt.Println(intList)降序
sort.Sort(sort.Reverse(sort.IntSlice(intList)))map
类似于 js 的对象
var nameMap map[string]int = map[string]int{ "张三": 18, "李四": 19, "王五": 20, } fmt.Println(nameMap)map[张三:18 李四:19 王五:20]fmt.Println(nameMap["张三"])18fmt.Println(nameMap["zhang"])0不存在的值会打印这个类型的初始值
怎么确定是否找到了这个值
value, ok := nameMap["zhang"]fmt.Println(value, ok)0 false修改和删除
// 修改map nameMap["张三"] = 20 fmt.Println(nameMap) // 删除 map delete(nameMap, "张三") fmt.Println(nameMap)map[张三:20 李四:19 王五:20]map[李四:19 王五:20]// map要做初始化var aMap = map[string]string{}var bMap = make(map[string]string)fmt.Println(aMap, bMap)


