go 的一些基础知识和用法
变量声明
- 使用 var 关键字
1 | // 可在函数内,也可在包内 |
- 编译器自动判断类型
1 | // 只能在函数内使用 |
强制类型转换
1 | var a,b int = 3,4 |
常量和枚举
1 | const a string = "def" |
条件语句
- if 条件语句
1 |
|
- switch 条件语句
1 | switch { |
- for 循环
1 | // 死循环 |
函数
函数 return 方式
1 | func div(a,b int) (q,r int){ |
指针
go 语言里面,函数传递都是用的值传递
1 | func swap (a, b *int){ |
数组
数组是值类型,函数传参会 copy 数组
1 | // 数组声明 |
- slice 切片
- slice 就是数组的视图,对切片进行赋值操作,就是数组进行的操作
- slice 包含三个值,指针,len,cap(容量)
1 | arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7} |
- slice 的操作
- 添加元素时,如果超越 cap,系统会重新分配更大的底层数组
- 由于值传递的关系,必须要接收 append 的结果 s = append(s, val)
1 | arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7} |
1 | s1 = []int{1, 23, 4, 5} |
Map
- Map 的创建
1 | m := map[string]string { |
- Map 的赋值、取值、删除
- key 不存在的时候,返回 value 类型的初始值
- map 使用哈希表,除了 slice,map,function 的内建类型都可以作为 key(struct 类型不包含上述字段,也可以作为 key)
1 | m := map[string]string { |
获取字符串的最长子串
- rune 相当于 go 的 char
1.
1 |
|
float四舍五入转化为int
1 | around := func(f float64) int { |