您好,登錄后才能下訂單哦!
在Go中,HashMap并不是內(nèi)置的數(shù)據(jù)結(jié)構(gòu),但我們可以使用map
關(guān)鍵字來(lái)創(chuàng)建一個(gè)哈希表。關(guān)于哈希表的備份與恢復(fù),我們可以將其分為兩個(gè)部分:備份(持久化)和恢復(fù)(加載)。
package main
import (
"encoding/json"
"fmt"
"os"
)
type HashMap struct {
data map[string]interface{}
}
func NewHashMap() *HashMap {
return &HashMap{data: make(map[string]interface{})}
}
func (h *HashMap) Set(key string, value interface{}) {
h.data[key] = value
}
func (h *HashMap) Get(key string) (interface{}, bool) {
value, ok := h.data[key]
return value, ok
}
func (h *HashMap) BackupToFile(filename string) error {
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
encoder := json.NewEncoder(file)
encoder.SetIndent("", " ")
return encoder.Encode(h.data)
}
func main() {
hashMap := NewHashMap()
hashMap.Set("name", "John")
hashMap.Set("age", 30)
err := hashMap.BackupToFile("hashmap_backup.json")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("HashMap backup saved to hashmap_backup.json")
}
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type HashMap struct {
data map[string]interface{}
}
func NewHashMap() *HashMap {
return &HashMap{data: make(map[string]interface{})}
}
func (h *HashMap) LoadFromFile(filename string) error {
file, err := ioutil.ReadFile(filename)
if err != nil {
return err
}
decoder := json.NewDecoder(file)
return decoder.Decode(h.data)
}
func main() {
hashMap := NewHashMap()
err := hashMap.LoadFromFile("hashmap_backup.json")
if err != nil {
fmt.Println("Error:", err)
return
}
value, ok := hashMap.Get("name")
if ok {
fmt.Println("Name:", value)
} else {
fmt.Println("Name not found")
}
value, ok = hashMap.Get("age")
if ok {
fmt.Println("Age:", value)
} else {
fmt.Println("Age not found")
}
}
這個(gè)示例中,我們首先創(chuàng)建了一個(gè)簡(jiǎn)單的哈希表結(jié)構(gòu),并實(shí)現(xiàn)了Set
、Get
、BackupToFile
和LoadFromFile
方法。然后,我們?cè)?code>main函數(shù)中創(chuàng)建了一個(gè)哈希表實(shí)例,向其添加了一些數(shù)據(jù),并將其備份到hashmap_backup.json
文件中。最后,我們從該文件中恢復(fù)了哈希表的內(nèi)容,并打印出了一些數(shù)據(jù)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。