Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Jump Consistent Hash

package main

import (
    "fmt"
)

func Hash(key uint64, buckets int32) int32 {
    var b, j int64

    if buckets <= 0 {
        buckets = 1
    }

    for j < int64(buckets) {
        b = j
        key = key*2862933555777941757 + 1
        j = int64(float64(b+1) * (float64(int64(1)<<31) / float64((key>>33)+1)))
    }

    return int32(b)
}

func main() {
    var m map[int32]int
    m = make(map[int32]int)

    for i := 0; i < 10000; i++ {
        node := Hash(uint64(i), int32(10))
        m[node]++
    }

    for k, v := range m {
        fmt.Println(k, ":", v)
    }
}

		

Json Array to Map

package main

import "fmt"
import "encoding/json"

type myType []map[string]interface{}

func main() {
    msg := "[{\"assets\" : 1, \"address\":\"Seoul\"}, {\"assets\":2}]"

    var data myType

    err := json.Unmarshal([]byte(msg), &data)
    if err != nil {
        println(err)
        return
    }

    for _, value := range data {
        fmt.Println(value["assets"])
    }

    mystr, _ := json.Marshal(data)
    fmt.Println(string(mystr))
}
	
		

Random String generator

package main

import (
    "math/rand"
    "fmt"
    "time"
)

var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")

func Init() {
    rand.Seed(time.Now().UnixNano())
}

func RandStringRunes(n int) string {
    b := make([]rune, n)
    for i := range b {
        b[i] = letterRunes[rand.Intn(len(letterRunes))]
    }
    return string(b)
}

func main() {
    Init()
    fmt.Println(RandStringRunes(16))
}