3 回答
TA贡献1794条经验 获得超7个赞
你不能含蓄地。的基础数据结构是地图,则该命令不被保证。您需要采取额外的步骤。
然而,Go maps in action展示了一种以排序方式访问地图的简单方法。您创建一个键切片,对该切片进行排序并通过迭代排序切片中的键来访问映射值。
对于您的示例,它看起来像这样
package main
import (
"crypto/md5"
"fmt"
"io"
"sort"
)
func main() {
// Which is the same structure as url.Values()
var m map[string][]string = make(map[string][]string)
m["c"] = []string{"19.95"}
m["b"] = []string{"foo", "bar", "baz"}
m["a"] = []string{"1"}
// Note that playground is deterministic, so the order should be preserved there
// However, you can not rely on that in the real world
fmt.Println("Unsorted")
for k, v := range m {
fmt.Println("Key:", k, "Value:", v)
}
var keys []string
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
hash := md5.New()
fmt.Println("\nSorted")
for _, k := range keys {
fmt.Println("Key:", k, "Value:", m[k])
// Add Key/Value pair to hash
fmt.Printf("\tAdding KEY '%s' to hash\n", k)
io.WriteString(hash, k)
for _, v := range m[k] {
fmt.Printf("\tAdding VALUE '%s' to hash\n", v)
io.WriteString(hash, v)
}
}
fmt.Printf("\nHash: %x", hash.Sum(nil))
}
TA贡献1839条经验 获得超15个赞
您可以阅读请求正文并检查表单参数。它们将以与请求中相同的顺序出现(希望您的客户端应用程序也知道此顺序保留)
您可以创建一个读取器来读取请求正文。一个示例代码如下所示
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("Reading Error ")
return
}
fmt.Println("Req Body : ", string(body))
注意:注意内容类型
- 3 回答
- 0 关注
- 218 浏览
添加回答
举报