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]
结论
我们使用两个示例执行并编译了实现切片的程序。在两个示例中,我们都通过插入新元素、复制切片、切片切片来演示了切片的使用。