Golang 将数组转换为Set

Golang 将数组转换为Set

在本教程中,我们将学习如何使用Golang编程语言将数组转换为Set。

Set是一个项目集合。您可以遍历这些项目/添加新项目/删除项目,并清除Set并获取大小并检查Set是否包含任何值。Set中的对象可能只存储一次,不可重复。

语法

var myset map[type]struct{}

键是您想要创建的数据类型。Struct{}是一个空结构,尺寸为0字节。

示例1:使用For循环将数组转换为集合的Go代码

步骤

  • 步骤 1 – 导入fmt包。

  • 步骤 2 – 开始main()函数。

  • 步骤 3 – 创建一个名为’a1’的集合并进行声明。

  • 步骤 4 – 将数组的元素添加到集合a1中。

  • 步骤 5 – 使用带有范围for循环迭代元素。

  • 步骤 6 – 检查元素是否存在于集合中。

  • 步骤 7 – 使用delete()函数删除元素。

  • 步骤 8 – 使用fmt.Println()将最终结果打印到屏幕上。

示例

package main

// fmt package allows us to print anything on the screen
import "fmt"

// start the function main()
// this function is the entry point of the executable program
func main() {

   // Create and Declaration of a set
   // a1 acts as a set of strings
   a1 := make(map[string]struct{})
   fmt.Println(a1) // map[]

   //Adding elements to Set
   // by setting the value of each key to an
   // empty struct
   var empty = struct{}{}
   a1["five"] = empty
   a1["four"] = empty
   a1["six"] = empty
   fmt.Println(a1)      // map[five:{} four:{} six:{}]
   fmt.Println(len(a1)) // 3

   //Iteration of elements of a Set using for loop with a range form
   for v := range a1 {
      fmt.Println(v)
   }

   // Check if elements exist in a set
   if _, ok := a1["five"]; ok {
      fmt.Println("exists in a set ") //  Element exists
   }
   if _, ok := a1["one"]; ok {
      fmt.Println("Not exists in a set.") // Element not exists
   }

   // use the delete() function of the map to remove elements from a set
   delete(a1, "five")
   fmt.Println(len(a1)) // 2
   // print the final results
}

输出

map[]
map[five:{} four:{} six:{}]
3
five
four
six
exists in a set 
2

说明

  • 在上面的程序中,我们首先声明了main包。main包用于告诉Go语言编译器必须编译该包并生成可执行文件。

  • 我们导入了fmt包,该包包含了与fmt包相关的文件,因此我们可以使用与fmt包相关的函数。

  • 现在开始main()函数,该函数是可执行程序的入口点。它既不需要任何参数,也不返回任何结果。

  • 现在我们创建了一个名为’a1’的空集合,它接受字符串值并进行声明。这里's1 := make(map[string]struct{})'是一个带有字符串键和空结构-struct{}的空集合。

  • 接下来,我们使用将元素添加到集合的语法将元素添加到集合的语法,即用于声明空结构的map。在代码的第23、24和25行,代码向集合中添加了三个元素。一旦数据被添加到集合中

  • 接下来,我们使用for循环和range形式迭代集合的元素。

  • 接下来,我们使用获取地图中的项目的两个值表达式来检查集合中的元素。在代码的第35行:if _,ok := a1["five"]; ok {:这里返回两个值,第一个值是一个空结构,不需要,所以用下划线(_)代替,第二个参数是一个布尔值-如果存在,则返回ok=true,如果不存在则返回ok=false。

  • 接下来,我们使用地图的delete()函数从集合中删除元素。我们可以使用Go的内置delete()函数从地图中删除项。

  • 最后,我们使用fmt.Println()函数打印结果。

  • 我们能够执行所有关于集合的特征操作,其时间复杂度为O(1),用于向集合添加和删除成员。

示例2:将数组转换为集合的更简洁的Go代码

步骤

  • 步骤1 – 导入fmt包。

  • 步骤2 – 开始main()函数。

  • 步骤3 – 创建一个名为’fruit’的集合并进行声明。

  • 步骤4 – 将数组的元素添加到集合fruit中。

  • 步骤5 – 使用fmt.Println()在屏幕上打印最终结果。

示例

// GOLANG PROGRAM TO CONVERT ARRAY TO SET
// We can implement set using Map types.
// Declare the package main
package main

// fmt package allows us to print anything on the screen
import "fmt"

// start the function main ()
// this function is the entry point of the executable program

func main() {
   // Create and Declaration of a set
   // fruit acts as a set of strings
   fruit := map[string]struct{}{}
   fmt.Println("fruit")
   // We can add members to the set
   // by setting the value of each key to an
   // empty struct
   fruit["apple"] = struct{}{}
   fruit["banana"] = struct{}{}
   fruit["Grapes"] = struct{}{}
   fruit["Orange"] = struct{}{}

   // Adding a new member
   fruit["Kiwi"] = struct{}{}

   // Adding an existing to the set
   fruit["Grapes"] = struct{}{}

   // Removing a member
   delete(fruit, "banana")

   fmt.Println(fruit)
}

输出

fruit
map[Grapes:{} Kiwi:{} Orange:{} apple:{}]

描述

在上面的代码中,我们使用数组元素创建了一个集合,并展示了一个不使用任何条件语句的简化代码。我们能够执行集合特征的所有操作,添加和删除成员的时间复杂度都是O(1)。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程