在 Go 語言中,切片(slice)提供了許多強大的操作,可以幫助開發者靈活地處理資料。下面是一些常見的切片操作及其示例:
1. 建立和初始化切片
使用字面量初始化
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} fmt.Println("Slice:", slice) }
使用 make
函式初始化
package main import "fmt" func main() { slice := make([]int, 5) fmt.Println("Slice with make:", slice) }
從陣列或其他切片建立
package main import "fmt" func main() { arr := [5]int{10, 20, 30, 40, 50} slice := arr[1:4] fmt.Println("Slice from array:", slice) }
2. 訪問和修改切片元素
訪問元素
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} fmt.Println("Element at index 0:", slice[0]) }
修改元素
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} slice[1] = 20 fmt.Println("Modified slice:", slice) }
3. 獲取切片的長度和容量
獲取長度
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} fmt.Println("Length:", len(slice)) }
獲取容量
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} fmt.Println("Capacity:", cap(slice)) }
4. 動態增加切片元素
使用 append
函式
package main import "fmt" func main() { slice := []int{1, 2, 3} slice = append(slice, 4, 5) fmt.Println("Appended slice:", slice) }
5. 切片的切片操作
從切片中建立子切片
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} subSlice := slice[1:4] fmt.Println("Sub-slice:", subSlice) }
6. 遍歷切片
使用 for
迴圈
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} for i := 0; i < len(slice); i++ { fmt.Println(slice[i]) } }
使用 range
關鍵字
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} for index, value := range slice { fmt.Printf("Index: %d, Value: %d\n", index, value) } }
7. 切片的複製
使用 copy
函式
package main import "fmt" func main() { source := []int{1, 2, 3} destination := make([]int, len(source)) copy(destination, source) fmt.Println("Destination slice:", destination) }
8. 刪除切片中的元素
刪除切片中的元素通常需要使用切片的切片操作。
刪除第 i 個元素
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} i := 2 slice = append(slice[:i], slice[i+1:]...) fmt.Println("After deletion:", slice) }
刪除開頭的元素
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} slice = slice[1:] fmt.Println("After deleting first element:", slice) }
刪除末尾的元素
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} slice = slice[:len(slice)-1] fmt.Println("After deleting last element:", slice) }
9. 多維切片
定義和初始化多維切片
package main import "fmt" func main() { matrix := [][]int{ {1, 2, 3}, {4, 5, 6}, } fmt.Println("2D Slice:", matrix) }
遍歷多維切片
package main import "fmt" func main() { matrix := [][]int{ {1, 2, 3}, {4, 5, 6}, } for i := 0; i < len(matrix); i++ { for j := 0; j < len(matrix[i]); j++ { fmt.Printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]) } } }
切片操作的總結
切片是 Go 語言中處理動態陣列的核心工具,提供了比陣列更為靈活和高效的操作方式。透過掌握切片的建立、訪問、修改、遍歷、動態增長、複製和刪除等操作,開發者可以更高效地處理各種資料集合。