Go語言make創(chuàng)建切片的五種方式
一、創(chuàng)建指定長度切片
創(chuàng)建指定長度的slice,元素初始化為零值,適用于知道長度且需要預先分配空間場景,代碼示例如下:
s1 := make([]int, 5) s2 := make([]string, 5)
此時創(chuàng)建的slice的容量于指定長度一致,當使用append追加數(shù)據(jù)超過容量時,底層自動擴容。
二、創(chuàng)建預分配容量切片
創(chuàng)建slice時指定長度以及容量,底層數(shù)組預留擴展空間,適用于會頻繁append操作的場景,代碼示例如下:
s3 := make([]string, 5, 10)
三、創(chuàng)建零長度空切片
創(chuàng)建一個長度為0但是不為nil的slice,適用于需要返回空切片但避免nil判斷場景,代碼示例如下:
s4 := make([]string, 0)
四、創(chuàng)建帶容量的空切片
創(chuàng)建一個長度為0容量為256的slice,適用于接收大量數(shù)據(jù)的緩沖區(qū)場景,代碼示例如下:
s5 := make([]string, 0, 256)
五、創(chuàng)建匿名結構體切片
創(chuàng)建匿名結構體slice,讓編譯器根據(jù)上下文自動推斷元素類型,適用于臨時數(shù)據(jù)存儲場景,代碼示例如下:
s6 := make([]struct{}, 2)六、創(chuàng)建方式對比
| 創(chuàng)建方式 | 長度 | 容量 | 底層數(shù)組 | 典型用途 |
|---|---|---|---|---|
| make([]T, n) | n | n | 已分配 | 固定長度集合 |
| make([]T, n, m) | n | m | 已分配 | 可擴展集合 |
| make([]T, 0) | 0 | 0 | 未分配 | 空集合占位符 |
| make([]T, 0, cap) | 0 | cap | 已分配 | 預分配緩沖區(qū) |
| make([]struct{}, n) | n | n | 已分配 | 輕量級占位結構 |
建議優(yōu)先使用make([]T, n, m)進行創(chuàng)建slice,預先分配容量,以較少擴容操作,提升性能。
到此這篇關于Go語言make創(chuàng)建切片的五種方式的文章就介紹到這了,更多相關Go語言make創(chuàng)建切片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
初探Golang數(shù)據(jù)結構之Slice的使用
在學習Go語言時,一直對數(shù)組和切片的使用場景好奇,不明白為什么推薦使用切片來代替數(shù)組,所以本文就來和大家梳理一下Slice切片的相關知識吧2023-09-09
GO語言創(chuàng)建錢包并遍歷錢包(wallet)的實現(xiàn)代碼
比特幣錢包實際上是一個密鑰對,當你安裝 一個錢包應用,或者是使用一個比特幣客戶端來生成一個新地址是,他就會為你生成一個密鑰對,今天通過本文給大家分享go語言遍歷錢包的相關知識,一起看看吧2021-05-05

