Rumah >pembangunan bahagian belakang >Golang >Memahami dan menggunakan contoh GolangMap

Memahami dan menggunakan contoh GolangMap

WBOY
WBOYasal
2024-01-16 10:12:18474semak imbas

Memahami dan menggunakan contoh GolangMap

GolangMap Pengenalan dan Contoh Aplikasi

Golang ialah bahasa pengaturcaraan yang dibangunkan oleh Google dan digunakan secara meluas dalam pembangunan web, pengkomputeran awan, sistem terbenam dan bidang lain. Antaranya, Map ialah struktur data di Golang, digunakan untuk menyimpan pasangan nilai kunci. Artikel ini akan memperkenalkan penggunaan asas GolangMap dan contoh aplikasi praktikalnya.

Penggunaan asas GolangMap

Golang’s Map ialah koleksi pasangan nilai kunci yang tidak tersusun, di mana kunci dan nilai boleh terdiri daripada sebarang jenis. Kaedah pengisytiharan dan permulaan Peta adalah seperti berikut:

//声明一个Map
var map1 map[string]int

//初始化Map
map1 = make(map[string]int)

//或者声明并初始化Map
map2 := make(map[string]int)

Antaranya, contoh pertama mengisytiharkan Peta tidak diinisialisasi, dan contoh kedua mengisytiharkan dan memulakan Peta, yang boleh digunakan mengikut keperluan. Untuk menambah pasangan nilai kunci dalam Peta, anda boleh menggunakan kaedah berikut:

//添加键值对
map1["one"] = 1
map1["two"] = 2
map1["three"] = 3

Untuk mengakses nilai yang sepadan dengan kunci dalam Peta, anda boleh menggunakan kaedah berikut:

//访问键对应的值
value := map1["one"]

Jika anda mengakses nilai yang tidak wujud kunci, nilai sifar jenis itu akan dikembalikan. Jika anda perlu menentukan sama ada kunci itu wujud, anda boleh menggunakan kaedah berikut:

//判断键是否存在
value, ok := map1["four"]
if ok {
    fmt.Println("the value of four is", value)
} else {
    fmt.Println("four does not exist in the map")
}

Antaranya, nilai pulangan kedua ialah jenis bool, menunjukkan sama ada kunci itu wujud.

Contoh aplikasi GolangMap

Dalam aplikasi praktikal, GolangMap boleh digunakan untuk menyelesaikan banyak masalah Beberapa contoh akan diperkenalkan di bawah.

  1. Kira bilangan kali perkataan muncul

Katakan kita kini perlu mengira bilangan kali setiap perkataan muncul dalam artikel Kita boleh menggunakan Peta untuk mencapai ini:

package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "A happy family is but an earlier heaven."
    words := strings.Fields(text)

    wordCount := make(map[string]int)
    for _, word := range words {
        wordCount[word]++
    }

    for word, count := range wordCount {
        fmt.Printf("%s:%d ", word, count)
    }
}

Antaranya, rentetan.Fields(teks. ) boleh membahagikan teks kepada Senarai perkataan kemudiannya dilalui melalui senarai perkataan, mengira bilangan kejadian setiap perkataan, dan akhirnya mengeluarkan setiap perkataan dan bilangan kejadiannya.

  1. Melaksanakan Caching

Andaikan kita perlu melaksanakan sistem caching yang boleh menyimpan beberapa objek dalam ingatan untuk meningkatkan prestasi program. Kita boleh menggunakan Map untuk mencapai:

package main

import (
    "fmt"
    "sync"
    "time"
)

type Cache struct {
    sync.RWMutex
    data map[string]interface{}
}

func NewCache() *Cache {
    return &Cache{data: make(map[string]interface{})}
}

func (c *Cache) Get(key string) (interface{}, bool) {
    c.RLock()
    defer c.RUnlock()
    val, ok := c.data[key]
    return val, ok
}

func (c *Cache) Set(key string, value interface{}) {
    c.Lock()
    defer c.Unlock()
    c.data[key] = value
}

func main() {
    cache := NewCache()

    cache.Set("key1", "value1")
    cache.Set("key2", "value2")

    fmt.Println(cache.Get("key1"))
    fmt.Println(cache.Get("key2"))

    time.Sleep(time.Second * 2)

    fmt.Println(cache.Get("key1"))

    cache.Set("key2", "new value2")

    fmt.Println(cache.Get("key2"))
}

Antaranya, fungsi NewCache() digunakan untuk memulakan objek Cache kosong, fungsi Get() digunakan untuk mendapatkan nilai yang sepadan dengan kunci tertentu, dan fungsi Set() digunakan untuk menambah atau mengubah suai kunci tertentu Nilai yang sepadan dengan kunci. Dalam fungsi main(), kami mula-mula menambah dua pasangan nilai kunci, kemudian mengeluarkan nilainya, dan kemudian tunggu 2 saat untuk mengeluarkan nilai salah satu kunci sekali lagi Anda boleh melihat bahawa cache belum tamat tempoh, dan kemudian diubah suai nilai kunci yang sepadan, dan akhirnya mengeluarkan nilai kunci.

  1. Melaksanakan baris gilir mesej

Andaikan kita perlu melaksanakan baris gilir mesej yang boleh menyimpan beberapa mesej dalam ingatan untuk mencapai pemprosesan tak segerak. Kita boleh menggunakan Map untuk mencapai:

package main

import (
    "fmt"
    "sync"
)

type MessageQueue struct {
    sync.Mutex
    data map[int]string
    index int
}

func NewMessageQueue() *MessageQueue {
    return &MessageQueue{data: make(map[int]string)}
}

func (mq *MessageQueue) Enqueue(msg string) {
    mq.Lock()
    defer mq.Unlock()

   mq.index++
    mq.data[mq.index] = msg
}

func (mq *MessageQueue) Dequeue() string {
    mq.Lock()
    defer mq.Unlock()

    msg, ok := mq.data[1]
    if !ok {
        return ""
    }

    delete(mq.data, 1)
    for i := 2; i <= mq.index; i++ {
        mq.data[i-1] = mq.data[i]
    }
    mq.index--

    return msg
}

func main() {
    mq := NewMessageQueue()

    mq.Enqueue("hello")
    mq.Enqueue("world")
    mq.Enqueue("golang")

    fmt.Println(mq.Dequeue())
    fmt.Println(mq.Dequeue())
    fmt.Println(mq.Dequeue())
    fmt.Println(mq.Dequeue())
}

Antaranya, fungsi NewMessageQueue() digunakan untuk memulakan objek MessageQueue kosong, fungsi Enqueue() digunakan untuk menambah mesej pada baris gilir mesej, dan fungsi Dequeue() ialah digunakan untuk mendapatkan baris gilir mesej A mesej. Dalam fungsi main(), kami mula-mula menambah 3 mesej pada baris gilir mesej, kemudian mengeluarkannya dalam urutan, dan akhirnya mengeluarkan mesej yang tidak wujud.

Ringkasan

GolangMap ialah struktur data dalam Golang yang boleh digunakan untuk menyimpan pasangan nilai kunci. Dalam aplikasi praktikal, GolangMap boleh digunakan untuk menyelesaikan banyak masalah praktikal, seperti mengira bilangan kejadian perkataan, melaksanakan caching, melaksanakan baris gilir mesej, dsb. Artikel ini memperkenalkan penggunaan asas GolangMap dan beberapa contoh aplikasi praktikal saya harap ia akan membantu pelajar Golang.

Atas ialah kandungan terperinci Memahami dan menggunakan contoh GolangMap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel berkaitan

Lihat lagi