Golang程序 从哈希集合中获取基于值的密钥
在golang中,我们可以使用hashmap来执行各种操作,如删除、更新和存储哈希集合中的值。在这篇文章中,我们将通过两个不同的例子来理解基于哈希集合中的一个值来获取密钥。在第一个例子中,我们将使用一个外部函数和迭代地图来从值中获取密钥,在第二个例子中,我们将使用一个反向地图来从所需的值中获取密钥。
算法
- 创建一个包main,并在程序中声明fmt(格式包),其中main产生可执行代码,fmt帮助格式化输入和输出。
-
创建一个名为get_value_from_key的外部函数,有两个输入,即hashmap和要获得的键的值。
-
遍历hashmap并在每次遍历时检查值是否等于hashmap的值。
-
如果为真,则返回被检查的键,但如果该值不存在于hashhmap中,则返回空字符串。
-
在main函数中,使用map literal创建了一个hashhmap,其中key是字符串类型,value是int类型。
-
用两个参数调用main中的外部函数,获得key中的返回值。
-
用一个不存在于hashmap中的值再次调用该函数,在这种情况下,将返回一个空字符串。
-
使用fmt.Println()函数在控制台打印key,其中ln表示新行。
例1
在这个例子中,我们将创建一个有两个参数的外部函数,即hashmap和要打印的键值。
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
总结
我们使用两种方法执行了基于哈希集合中的一个值获得一个密钥的程序。在第一个例子中,我们使用了一个外部函数和迭代来获得所需的密钥,在第二个例子中,我们使用了一个反向映射技术来获得所需的输出。