Golang 学习笔记02-Go的数据类型

Golang 学习笔记02-Go的数据类型
SEAlencehe- 整数型
- 浮点型
- 复数
- 布尔
- 字符串
整数型
var n1 uint8 = 2
var n2 uint16 = 2
var n3 uint32 = 2
var n4 uint64 = 2
var n5 uint = 2
var n6 int8 = 2
var n7 int16 = 2
var n8 int32 = 2
var n9 int64 = 2
var 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 97
a 97
type 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 world
hello
world
"hello"world
world
C:\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)
0
0
""
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["张三"])
18
fmt.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)
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果


