type slice struce
func
(slice [
]type,elems ...type)
[值為結構體的情況下考慮使用指標。返回乙個新的切片
先根據傳參觀察是否需要擴容
如果要擴容,擴容本質是分配一塊更大的記憶體,並將舊slice的資料拷貝進新的slice。若原slice容量小於1024就會將容量擴大為原來的兩倍,否則擴大為原來的1.25倍,這樣可以節約資源(似乎go還會根據元素型別做一些微調,這裡先不管)。擴容完成後將要追加的資料分配進去,且新的slice指向新的陣列。例:
arr1:=[4
]int
//1,2,3,4
sli1:=arr1[0:
3]//1,2,3
case1:需要擴容
sli2:=
(sli1,8,
9)//1,2,3,8,9
fmt.
println
(arr1)
//1,2,3,4
case2:不需要擴容
sli2:=
(sli1,8)
//1,2,3,8
fmt.
println
(arr1)
//1,2,3,8
x:=
make([
]int,0
,10)
x=(x,1,
2,3) 此時的底層陣列:1,2
,3,0
,0,0
,0,0
,0,0
y:=(x,8
) 此時的底層陣列:1,2
,3,8
,0,0
,0,0
,0,0
z:=(x,10
) 此時的底層陣列:1,2
,3,10
,0,0
,0,0
,0,0
fmt.
println
(x) 仍為1,2
, fmt.
println
(y)1,2
,3, fmt.
println
(z)1,2
,3,10 此時的底層陣列:1,2
,3,10
,0,0
,0,0
,0,0
多執行緒 ReentrantLock的原理以及使用
兩個執行緒之間通訊根據不同的條件進行不同的通訊 1.await 其他程阻塞,要是當前執行緒向下執行,那麼其他的執行緒必須喚醒它本身,這樣當前執行緒才可以繼續向下執行 2.signal 喚醒當前執行緒 public class main public static void main string a...
訊息佇列實現原理(以kafka為例)
訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能 高可用 可伸縮和最終一致性架構。使用較多的訊息佇列有kafka activemq rabbitmq zeromq metamq rocketmq。訊息佇列在實際應用中常用的使用場景 非同步處理,應用解...
屬性指令的解析原理 以 v if 為例
面試中,面試官不免要問,關於v if這類的指令,實現的原理是什麼?效果圖示 htnl id root 我是指令的展示和隱藏div 我是要隱藏的div div 我們期望在介面上,展示的效果是這樣的 第一步 獲取元素dom節點 var el document.getelementbyid root 第二...