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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告