Golang 将向量转换为列表

Golang 将向量转换为列表

在Golang中,向量被称为数组或切片。切片是一个动态数组,其大小可以更改,而链表数据结构是一种列表类型,其中每个节点具有一个值并指向下一个元素。我们将在此程序中使用两个示例将向量转换为列表。在第一个示例中,将使用内置的copy函数,而在第二个示例中,我们将以相反的顺序迭代切片以获得输出。

方法1:使用copy函数

在此方法中,我们创建了一个向量,将使用copy和make函数将其转换为列表。copy函数将使用make函数将向量元素复制到新创建的列表中。

语法

func copy(dst, str[] type) int

在Go语言中, copy 函数用于将源数组的值复制到目标数组,并返回复制的元素数量作为结果。它接受两个数组作为参数。

func make ([] type, size, capacity)

在go语言中, make 函数用于创建一个数组/映射,它接受要创建的变量的类型、大小和容量作为参数

func len(v Type) int

len()函数用于获取任何参数的长度。它接受一个参数作为数据类型变量,我们希望找到其长度,并返回一个整数值,该值是变量的长度。

步骤

  • 步骤1 - 创建一个主包,并在程序中声明fmt(格式化包)包,其中main生成可执行代码,而fmt则有助于格式化输入和输出。

  • 步骤2 - 创建一个带有一些值的int切片向量。

  • 步骤3 - 在下一步中,使用make函数生成一个与向量长度相同的新切片列表。

  • 步骤4 - 现在,使用copy函数将向量的项添加到列表中。

  • 步骤5 - 使用fmt.Println()函数在控制台上打印新列表和向量列表,其中ln表示换行。

  • 步骤6 - 需要注意的是,在Go中,切片是一种类似于动态数组的数据结构,复制现有切片通常涉及到创建一个与原始切片长度相同的新切片。使用copy函数将元素从一个切片复制到另一个切片。

示例

在这个示例中,我们将使用copy函数将向量转换为列表。让我们通过代码来看看如何实现。

package main
import (
   "fmt"
)

func main() {
   slice := []int{10, 20, 30, 40, 50}  //create a vector

   // convert slice to list
   list := make([]int, len(slice))
   copy(list, slice)  //use copy function to copy the elements of a slice to a list

   fmt.Println("Vector:", slice)  //print the vector
   fmt.Println("The conversion of slice to list looks like:")
   fmt.Println("List:", list)  //print the list
}

输出

Vector: [10 20 30 40 50]
The conversion of slice to list looks like:
List: [10 20 30 40 50]

方法2:使用链表

这种方法通过反向迭代切片并为切片中的每个元素构造一个新节点,然后跟随其前面的节点来生成链表。

语法

func len(v Type) int

len() 函数用于获取任何参数的长度。它接受一个参数作为数据类型变量,我们希望找到其长度,并返回整数值作为变量的长度。

步骤

  • 步骤1 - 创建一个main包,并在程序中声明fmt(格式化包)包,其中main生成可执行代码,fmt用于格式化输入和输出。

  • 步骤2 - 创建一个Node结构类型,它有两个成员,名为Value和Next,它们分别是int和*Node类型。

  • 步骤3 - 创建一个int类型的切片,并创建类型为*Node的变量head,并将其初始值设置为nil。

  • 步骤4 - 反向遍历整数的切片。

  • 步骤5 - 使用Node结构为切片中的每个元素创建一个新的节点,并将Value字段设置为现在在切片中的元素,将Next字段设置为先前创建的节点。

  • 步骤6 - 创建一个新节点并将其分配给head变量。

  • 步骤7 - 对于切片的每个组件,重复步骤5和步骤6。

  • 步骤8 - 通过跟随Next指针导航链表,然后输出每个节点的值。

  • 步骤9 - 使用fmt.Println()函数执行输出语句,其中ln表示换行。

示例

在这个示例中,我们将使用链表将向量转换为列表。让我们通过代码了解其执行过程。

package main
import "fmt"

type Node struct {
   Value int
   Next  *Node
}

func main() {
   // Create a slice of ints
   vector_val := []int{10, 20, 30, 40, 50}  //create a vector
   fmt.Println("The initially created vector is:", vector_val)

   // Convert the slice to a linked list
   var head *Node
   for i := len(vector_val) - 1; i >= 0; i-- {
      head = &Node{vector_val[i], head}  //convert the vector to list
   }

   // Print the linked list
   fmt.Println("The elements of list are:")
   for node := head; node != nil; node = node.Next {
      fmt.Println(node.Value)  //print the values of list
   }
}

输出

The initially created vector is: [10 20 30 40 50]
The elements of list are:
10
20
30
40
50

结论

我们执行了将向量转换为列表的程序,使用了两种方法。在第一个示例中,我们使用了内置的复制函数,而在第二个示例中,我们使用了链表来执行。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程