Golang數組和切片的區別


 

大綱


  • 數組是固定大小
  • 切片不是動態數組,可以擴容

區別


  • 定義方式不一樣
  • 初始化方法不一樣
package main import "fmt" func main() { // -------------------- 數組 ----------------- // 指定數組大小 var a1 [5]int // 自動推斷數組大小 a2 := [...]int{1, 2, 3} // 打印 fmt.Println(a1, a2) // 按索引賦值 a3 := [...]int{2: 2, 4: 4} fmt.Println(a3) // 按索引賦值 a4 := [5]int{2: 2, 4: 4} fmt.Println(a4) // -------------------- 切片 ----------------- // 定義切片 var b1 []int fmt.Println(b1) // 初始化 b1 = make([]int, 5, 5+3) fmt.Println(b1) fmt.Printf("b1=%v,len=%d,cap=%d\n", b1, len(b1), cap(b1)) // 初始化 b2 := make([]int, 3, 5) fmt.Printf("b2=%v,len=%d,len=%d\n", b2, len(b2), cap(b2)) } 
  • 執行結果
[Running] go run main.go -------------------- [0 0 0 0 0] [1 2 3] [0 0 2 0 4] [0 0 2 0 4] [] [0 0 0 0 0] b1=[0 0 0 0 0],len=5,cap=8 b2=[0 0 0],len=3,len=5 [Done] exited with code=0 in 0.237678 seconds 

定義不一樣


  • 數組定義
var a1 [3]int var a2 [...]int{1,2,3} 
  • 切片定義
var b1 []int b2 := make([]int, 3, 5) 

初始化不同


  • 數組
a1 := [...]int{1,2,3} a2 := [5]int{1,2,3} 
  • 切片
b1 := make([]int, 3,5)



作者:笑吧小鳥
鏈接:https://www.jianshu.com/p/ef5617456b94
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM