Go語言程式實現切片


Go語言中的切片是一個動態陣列,用於新增無法新增到固定大小陣列中的額外元素。本文將透過兩個示例演示切片的使用。在兩個示例中,都對切片執行了各種操作來展示其工作原理。第一個示例建立了一個字串切片,第二個示例建立了一個整數切片。讓我們透過示例瞭解這些操作,以獲得對該概念的清晰理解。

語法

funccopy(dst, str[] type) int

Go語言中的`copy`函式用於將一個源陣列的值複製到目標陣列,並返回已複製的元素數量作為結果。它以兩個陣列作為引數。

func make ([] type, size, capacity)

Go語言中的`make`函式用於建立陣列/對映,它接受要建立的變數型別、其大小和容量作為引數。

funcappend(slice, element_1, element_2…, element_N) []T

`append`函式用於向陣列切片新增值。它接受多個引數。第一個引數是要新增值的陣列,後跟要新增的值。然後,該函式返回包含所有值的陣列的最終切片。

演算法

  • 建立一個`main`函式,並在該函式中使用`make`函式(一種內建函式)建立一個字串元素的切片。

  • 在此步驟中,使用索引設定切片中的值,在切片中設定三個值。

  • 使用`fmt`包中的`Println`函式在控制檯上列印切片元素。

  • 然後,使用`append`函式(Go語言中的另一個內建函式)向切片中追加值。

  • 以與之前步驟相同的方式在控制檯上列印更新後的切片。

  • 然後,切片該切片並在控制檯上列印它。

  • 最後,迭代巧克力切片直到其範圍,並在每次迭代中使用`Println`函式(其中`ln`表示換行)列印索引和該索引處的值。

示例 1

在此示例中,我們將建立一個字串型別的切片,並透過首先設定切片中的值、追加新值、切片切片然後迭代它來操作切片。所有輸出都將使用`fmt`包列印。

package main

import "fmt"

func main() {
   // create a slice with an initial capacity of 3
   slice := make([]string, 3)
   fmt.Println("empty slice:", slice)

   // set values to the slice
   slice[0] = "munch"
   slice[1] = "bourbon"
   slice[2] = "perk"
   fmt.Println("set slice:", slice)

   slice = append(slice, "Dairy milk")
   fmt.Println("appended slice:", slice)

   sliced := slice[1:4]
   fmt.Println("sliced slice:", sliced)

   // iterate over the slice
   for i, chocolates := range slice {
      fmt.Printf("index %d, value %s\n", i, chocolates)
   }
}

輸出

empty slice: [  ]
set slice: [munch bourbon perk]
appended slice: [munch bourbon perk Dairy milk]
sliced slice: [bourbon perk Dairy milk]
index 0, value munch
index 1, value bourbon
index 2, value perk
index 3, value Dairy milk

示例 2

在此示例中,將像在前面的示例中一樣建立一個切片,但這裡將在切片中設定整數,然後像切片一樣對其進行操作,切片將被切片,然後使用內建函式將元素新增到切片中,並將建立一個新的複製切片。

//Golang program to implement slices
package main

import "fmt"

func main() {
   slice := []int{10, 20, 30, 40, 50}
   fmt.Println("initial slice:", slice)

   sliced := slice[1:4]
   fmt.Println("sliced slice:", sliced)

   slice[2] = 11
   slice[4] = 22
   fmt.Println("modified slice:", slice)

   sliced[1] = 44
   fmt.Println("modified sliced slice:", sliced)

   slice = append(slice, 66)
   fmt.Println("appended slice:", slice)
   
   copySlice := make([]int, len(slice))
   copy(copySlice, slice)
   fmt.Println("copied slice:", copySlice)
}

輸出

initial slice: [10 20 30 40 50]
sliced slice: [20 30 40]
modified slice: [10 20 11 40 22]
modified sliced slice: [20 44 40]
appended slice: [10 20 44 40 22 66]
copied slice: [10 20 44 40 22 66]

結論

我們使用兩個示例執行並編譯了實現切片的程式。在兩個示例中,我們都透過插入新元素、複製切片、切片切片來演示了切片的使用。

更新於: 2023年7月20日

156 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.