go 语言入门

基本语法

常用库

切片

go 通过切片模拟栈和队列
1
// 创建栈
2
stack:=make([]int,0)
3
// push压入
4
stack=append(stack,10)
5
// pop弹出
6
v:=stack[len(stack)-1]
7
stack=stack[:len(stack)-1]
8
// 检查栈空
9
len(stack)==0
Copied!
队列
1
// 创建队列
2
queue:=make([]int,0)
3
// enqueue入队
4
queue=append(queue,10)
5
// dequeue出队
6
v:=queue[0]
7
queue=queue[1:]
8
// 长度0为空
9
len(queue)==0
Copied!
注意点
  • 参数传递,只能修改,不能新增或者删除原始数据
  • 默认 s=s[0:len(s)],取下限不取上限,数学表示为:[)

字典

基本用法
1
// 创建
2
m:=make(map[string]int)
3
// 设置kv
4
m["hello"]=1
5
// 删除k
6
delete(m,"hello")
7
// 遍历
8
for k,v:=range m{
9
println(k,v)
10
}
Copied!
注意点
  • map 键需要可比较,不能为 slice、map、function
  • map 值都有默认值,可以直接操作默认值,如:m[age]++ 值由 0 变为 1
  • 比较两个 map 需要遍历,其中的 kv 是否相同,因为有默认值关系,所以需要检查 val 和 ok 两个值

标准库

sort
1
// int排序
2
sort.Ints([]int{})
3
// 字符串排序
4
sort.Strings([]string{})
5
// 自定义排序
6
sort.Slice(s,func(i,j int)bool{return s[i]<s[j]})
Copied!
math
1
// int32 最大最小值
2
math.MaxInt32 // 实际值:1<<31-1
3
math.MinInt32 // 实际值:-1<<31
4
// int64 最大最小值(int默认是int64)
5
math.MaxInt64
6
math.MinInt64
Copied!
copy
1
// 删除a[i],可以用 copy 将i+1到末尾的值覆盖到i,然后末尾-1
2
copy(a[i:],a[i+1:])
3
a=a[:len(a)-1]
4
5
// make创建长度,则通过索引赋值
6
a:=make([]int,n)
7
a[n]=x
8
// make长度为0,则通过append()赋值
9
a:=make([]int,0)
10
a=append(a,x)
Copied!

常用技巧

类型转换
1
// byte转数字
2
s="12345" // s[0] 类型是byte
3
num:=int(s[0]-'0') // 1
4
str:=string(s[0]) // "1"
5
b:=byte(num+'0') // '1'
6
fmt.Printf("%d%s%c\n", num, str, b) // 111
7
8
// 字符串转数字
9
num,_:=strconv.Atoi()
10
str:=strconv.Itoa()
Copied!

刷题注意点

  • leetcode 中,全局变量不要当做返回值,否则刷题检查器会报错
最近更新 1yr ago