重新开始学算法
以及开始Go教程–跟着视频,记录知识点和项目中的使用方法和技巧
高性能golang https://space.bilibili.com/692817426
字节的貌似还不错
Go夜读
if 和for和其他语言类似
// 可以声明到判断条件里,这样外边就不会存a,b,也不能调用
if a, b := 10, true; a>5 {
...
}
Go slice切片
就是一个指针,加上目前有的长度len,加上内存预留空间总共 cap
arr :=make([]int, 3, 5) //不能给第四个元素赋值,因为只开了3.
arr[0],arr[1],arr[3] = 2, 3, 4
随后可以用br操作 ,注意Go语言中,等号赋值都会发生拷贝
brr := arr
brr[0] = 4
append(arr,8)
brr := append(arr,8) (2 3 4 8 null)
brr := append(brr,8) (2 3 4 8 8) 此时arr还是只能访问 (2 3 4)
brr := append(brr,8) (2 3 4 8 8 8 null . . . ...) 此时改brr[1.2.3]都不会影响arr,因为不再共享内存空间
这就把第一位改成4了,由于是浅拷贝,arr与其共享的底层数组也变成4了。arr[0]也是4
注意这里append超过5个之前,arr和brr都共享底层内存空间(数组),超了以后,会申请新的内存空间,把原来5个拷贝到新的内存空间,然后再append新的那个元素
扩容的时候默认扩容2倍长度(前提<256),如果超过当前容量的2倍,那么扩容容量就是实际长度的偶数值(如果长度是奇数,那么就加1),如果容量超过256,实际执行1.25x扩容,直到容量足够存储。
3. 字符串:
a = "Golang你好"
arr := []rune(a) //放在rune切片里可以输出原本字,而不是utf的编码byte号
for _,ele := range a {
fmt.Println("%c\n", ele);
}
//
G
o
l
a
n
g
你
好
//
3.2 字符串拼接
a="Golang"
b="教程"
c:=a+" "+ b //就是Golang 教程
Go 核心编程:
1. 接口 P105-131
2. 并发
3. 反射 P185-211
剩下的读一读思想即可
接口这个主要模式记忆,习惯即可。和其他编程语言类似
Go 高级编程
1. 面向并发的内存模型
常见并发和错误与异常处理
2. RPC, protobuf
3. 其他用到时再看
4. 等一切就绪就可以go和web了,gin框架搞起来。
然后业务系统就可以开始写了
1. 仓库管理系统
功能模块:
2. 订单系统
3. 清算系统
4. 其他(懂的,半年内先不写这里,只是调用即可)