基于哈希集合的值获取键的 Golang 程序
在 Golang 中,我们可以使用哈希图执行各种操作,例如删除、更新和存储哈希集合中的值。在本文中,我们将通过两个不同的示例来了解如何从哈希集合中基于值获取键。在第一个示例中,我们将使用一个外部函数并迭代映射以从值获取键,在第二个示例中,我们将使用反向映射从所需值获取键。
算法
创建一个名为 main 的包并在程序中声明 fmt(格式化包),其中 main 生成可执行代码,而 fmt 帮助格式化输入和输出。
创建一个名为 get_value_from_key 的外部函数,它有两个输入:哈希图和要获取其键的值。
迭代哈希图,并在每次迭代中检查该值是否等于哈希图的 val。
如果为真,则返回其值被检查的键,但如果哈希图中不存在该值,则返回空字符串。
在 main 函数中,使用映射字面量创建一个哈希图,其中键的类型为字符串,值的类型为整数。
使用两个参数从 main 调用外部函数,并在 key 中获取返回值。
再次使用哈希图中不存在的值调用该函数,在这种情况下将返回一个空字符串。
使用 fmt.Println() 函数在控制台上打印键,其中 ln 表示换行。
示例 1
在此示例中,我们将创建一个具有两个参数的外部函数,即哈希图和要打印其键的值。
package main import "fmt" func get_value_from_key(hash map[string]int, value int) string { for key, val := range hash { if val == value { //check if the value is equal to the val from hashmap return the key return key } } return "" } func main() { // Example hash collection hashmap := map[string]int{ "one": 10, "two": 20, "three": 30, } // obtain key for value 2 key := get_value_from_key(hashmap, 20) fmt.Println("The key to corresponding value is:") fmt.Println(key) // obtain key for value 4 (not found) key = get_value_from_key(hashmap, 40) fmt.Println(key) }
输出
The key to corresponding value is: two
示例 2
在此示例中,我们将创建一个映射,在其中我们将以相反的方式将键分配给值,然后我们将返回作为输入给定的值的相应键。输出将是相应值的键。让我们通过代码和算法来探讨它。
package main import "fmt" func get_key_from_value(hash map[string]int, value int) string { reverseHash := make(map[int]string) for key, val := range hash { reverseHash[val] = key //use map reversal to add the leys to the following values } return reverseHash[value] //return the key following to this value } func main() { // Example hash collection hashmap := map[string]int{ "one": 10, "two": 20, "three": 30, } // obtain key for value 2 key := get_key_from_value(hashmap, 20) fmt.Println("The key of the above value is: ") fmt.Println(key) // Output: two // obtain key for value 4 (not found) key = get_key_from_value(hashmap, 40) fmt.Println(key) // Output: }
输出
The key of the above value is: two
结论
我们使用两种方法执行了从哈希集合中基于值获取键的程序。在第一个示例中,我们使用了外部函数和迭代来获取所需的键,在第二个示例中,我们使用了反向映射技术来获取所需的输出。
广告