Golang Slice 常見的問題


1.以下的這行代碼

在切片進行初始化的時候長度為0 容量為10  直接給切片進行賦值 報錯 長度超出范圍,切片是引用類型可以自動擴容,我們可以使用方法append專門給切片進行擴容

Slice切片初始化通過make分配內存的時候必須分配長度,容量是可選的  a := make([]int,5,5)  長度為5 容量為5的int類型的切片,切片是一個動態數組可以自動擴容

package main

import (
	"fmt"
)

func main() {
	var a []int
	a = make([]int, 0, 10) //make進行初始化一個切片 不然panlic 長度len為0 容量capacity為10
	// a[0] = 1
	// fmt.Println(a) //這樣就panlic了 因為長度為0 導致的 index out of range
	//不過我們可以使用 append 方法進行給切片追加元素
	a = append(a, 1)
	fmt.Println(len(a), cap(a)) //查看下長度和 容量
}

 

apped 是一個內置的函數

需要的注意的給slice進行擴容以后,我們需要重新賦值 

package main 

import(
	"fmt"
)

func main(){
	var a []byte 
	//append是一個內置的函數 
	//為什么給slice追加元素以后還需要賦值給 a這個變量 
	//因為slice 是一個引用類似,支持自動擴容,切片擴容以后地址也發生了改變,所以我們要重新賦值給a這個變量   
	//擴容之后的地址 和我們之前這個a地址是不一樣的  
	a = append(a,'a')
}

  

 


免責聲明!

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



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