package
0.0.0-20240106021156-110d06eb4450
Repository: https://github.com/hollson/gdk.git
Documentation: pkg.go.dev

# README

kkmap

A map type with two keys

Install

go get github.com/hollson/kkmap

Usage

package main

import (
    "fmt"
    "github.com/hollson/kkmap"
)

// define a kkmap object
type TcpPacket struct {
    UUID      string
    RemoteUrl string
    Name      string
}

func (t *TcpPacket) String() string {
    return fmt.Sprintf("%+v", *t)
}

func (t *TcpPacket) Key1() interface{} {
    return t.UUID
}

func (t *TcpPacket) Key2() interface{} {
    return t.RemoteUrl
}

func main() {
    // create a kkmap
    kk := kkmap.NewMap()
    kk.Set(&TcpPacket{
        UUID:      "1001",
        RemoteUrl: "127.0.0.1:8801",
        Name:      "tom",
    })

    kk.Set(&TcpPacket{
        UUID:      "1002",
        RemoteUrl: "127.0.0.1:8802",
        Name:      "jack",
    })

    kk.Set(&TcpPacket{
        UUID:      "1003",
        RemoteUrl: "127.0.0.1:8803",
        Name:      "lily",
    })

    kk.Set(&TcpPacket{
        UUID:      "1004",
        RemoteUrl: "127.0.0.1:8804",
        Name:      "lucy",
    })

    fmt.Println(kk.GetByKey2("127.0.0.1:8804"))
    fmt.Println(kk.GetByKey1("1001").(*TcpPacket).String())
    fmt.Println(kk.Length())

    kk.Delete(&TcpPacket{
        UUID:      "1001",
        RemoteUrl: "127.0.0.1:8801",
        Name:      "",
    })

    kk.RangeByKey1(func(k kkmap.KKobject) {
        fmt.Println(k.(*TcpPacket).UUID)
    })
}