docusaurus插件开发
Some checks failed
Release / deploy (push) Failing after 1m42s

This commit is contained in:
2024-03-24 18:34:18 +08:00
parent ac55a0c6a2
commit e9c32c4118
9 changed files with 340 additions and 47 deletions

View File

@@ -172,7 +172,7 @@ func ModifySlice(slice []int) {
在1.18之前切片的扩容是原来的2倍但是当容量超过1024时每次容量变成原来的1.25倍直到大于期望容量。在1.18后更换了新的机制:
<https://github.com/golang/go/blob/27f41bb15391668fa8ba18561efe364bab9b8312/src/runtime/slice.go#L267>
[src/runtime/slice.go#L267](https://github.com/golang/go/blob/27f41bb15391668fa8ba18561efe364bab9b8312/src/runtime/slice.go#L267)
- 当新切片>旧切片\*2时直接安装新切片容量计算
- 如果旧切片\<256新切片容量为旧切片\*2
@@ -195,7 +195,7 @@ func TestCap(t *testing.T) {
至于实际的结果为什么没有和上述说的一样,可以看到,在`nextslicecap`计算出容量后续,还有对`newcap`的一系列操作,这是内存对齐的一系列计算。
<https://github.com/golang/go/blob/27f41bb15391668fa8ba18561efe364bab9b8312/src/runtime/slice.go#L188>
[src/runtime/slice.go#L188](https://github.com/golang/go/blob/27f41bb15391668fa8ba18561efe364bab9b8312/src/runtime/slice.go#L188)
逻辑比较复杂,可以进入调试模式跟踪逻辑,这里就不多展开了