go語言基礎之切片的創建和截取


1、切片的創建

示例:

package main //必須有個main包

import "fmt"

func main() {
	//切片和數組的區別
	//數組[]里面的長度時固定的一個常量, 數組不能修改長度, len和cap永遠都是5
	a := [5]int{}
	fmt.Printf("len = %d, cap = %d\n", len(a), cap(a))

	//切片, []里面為空,或者為...,切片的長度或容量可以不固定
	s := []int{}
	fmt.Printf("1: len = %d, cap = %d\n", len(s), cap(s))

	s = append(s, 11) //給切片末尾追加一個成員
	fmt.Printf("append: len = %d, cap = %d\n", len(s), cap(s))

}

執行結果:

len = 5, cap = 5
1: len = 0, cap = 0
append: len = 1, cap = 1  

  

2、切片的截取

切片語法:

操作

含義

s[n]

切片s中索引位置為n的項

s[:]

從切片s的索引位置0到len(s)-1處所獲得的切片

s[low:]

從切片s的索引位置low到len(s)-1處所獲得的切片

s[:high]

從切片s的索引位置0到high處所獲得的切片,len=high

s[low:high]

從切片s的索引位置low到high處所獲得的切片,len=high-low

s[low:high:max]

從切片s的索引位置low到high處所獲得的切片,len=high-low,cap=max-low

len(s)

切片s的長度,總是<=cap(s)

cap(s)

切片s的容量,總是>=len(s)

 

示例:

package main //必須有個main包
 
         
import "fmt"
 
         
func main() {
	array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	//[low:high:max] 取下標從low開始的元素, len=high-low, cap=max-low
	s1 := array[:] //[0:len(array):len(array)] 不指定容量和長度一樣
	fmt.Println("s1 = ", s1)
	fmt.Printf("len = %d, cap = %d\n", len(s1), cap(s1))
 
         
	//操作某個元素,和數組操作方式一樣
	data := array[1]
	fmt.Println("data = ", data)
 
         
	s2 := array[3:6:7] //a[3], a[4], a[5]   len = 6-3=3    cap = 7-3=4
	fmt.Println("s2 = ", s2)
	fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))
 
         
	s3 := array[:6] //從0開始,去6個元素,容量也是6, 常用
	fmt.Println("s3 = ", s3)
	fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))
 
         
	s4 := array[3:] //從下標為3開始,到結尾
	fmt.Println("s4 = ", s4)  //[3 4 5 6 7 8 9]
	fmt.Printf("len = %d, cap = %d\n", len(s4), cap(s4))
}

執行結果:

s1 = [0 1 2 3 4 5 6 7 8 9]

len = 10, cap = 10

data = 1

s2 = [3 4 5]

len = 3, cap = 4

s3 = [0 1 2 3 4 5]

len = 6, cap = 10

s4 = [3 4 5 6 7 8 9]

len = 7, cap = 7

  

 


免責聲明!

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



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