golang 按key字母顺序遍历map

package main
 
import (
	"fmt"
	"crypto/md5"
	"math/rand"
	"sort"
	"time"
)
 
type MapEntryHandler func (string, string)
 
// func printKeyValue(key string, value string) {
// 	fmt.Printf("key=%s, value=%s
", key, value)
// }
 
// 按字母顺序遍历map
func traverseMapInStringOrder(params map[string]string, handler MapEntryHandler) {
	keys := make([]string, 0)
	for k, _ := range(params) {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	for _, k := range keys {
		handler(k, params[k])
	}
}
 
func main() {
	params := map[string]string{}
 
	params["captchaId"] = "d094d0ba1af"
	params["validate"] = "17faa76f4a"
	params["user"] = "mingzhanghui"
	params["version"] = "1.0"
	params["timestamp"] = "1553435624624"
	rand.Seed(time.Now().UnixNano())
	params["nounce"] = fmt.Sprintf("%d", rand.Int())
	buff := []byte("gmy12345")
	params["signature"] = fmt.Sprintf("%x", md5.Sum(buff))
	
	// 	traverseMapInStringOrder(params, printKeyValue)
	traverseMapInStringOrder(params, func (key string, value string) {
		fmt.Printf("keys=%s, value=%s
", key, value)
	})
}

运行结果

keys=captchaId, value=d094d0ba1af
keys=nounce, value=5479916053492602771
keys=signature, value=be1776a32cea72e361e72d082252de93
keys=timestamp, value=1553435624624
keys=user, value=mingzhanghui
keys=validate, value=17faa76f4a

  

原文地址:https://www.cnblogs.com/dfsxh/p/12874254.html