用go实现一个哈希表
时间: 2023-02-07 11:00:06 浏览: 71
好的。实现哈希表的方法有很多,下面我给出一个使用 go 语言实现哈希表的简单例子。
首先,我们需要定义一个结构体来表示哈希表中的每个节点:
```
type node struct {
key string
value int
next *node
}
```
然后,我们可以定义一个哈希表结构体,其中包含一个桶的数组,每个桶都是一个指向第一个节点的指针:
```
type hashTable struct {
buckets []*node
}
```
接下来,我们可以实现一个哈希函数,该函数将输入的键值映射到哈希表中的桶编号:
```
func hash(key string, size int) int {
// 使用简单的乘法哈希函数
var h int
for _, c := range key {
h = h*37 + int(c)
}
return h % size
}
```
现在,我们可以开始实现哈希表的插入、查找和删除操作了。例如,下面是插入操作的实现:
```
func (ht *hashTable) insert(key string, value int) {
h := hash(key, len(ht.buckets))
n := ht.buckets[h]
for n != nil {
if n.key == key {
n.value = value
return
}
n = n.next
}
newNode := &node{key, value, ht.buckets[h]}
ht.buckets[h] = newNode
}
```
这里是查找操作的实现:
```
func (ht *hashTable) find(key string) (int, bool) {
h := hash(key, len(ht.buckets))
n := ht.buckets[h]
for n != nil {
if n.