背景:
产品经理:动态配置的字段,要有有序输出,不要一直变化顺序
我们后端是用Go开发:小猿
Go之母设计的时候就是故意设置随机值,要无序的输出 :小猿
产品经理:我管你那个,你就说能不能干吧
这话说的,干肯定能干。 只不过需要耗费时间:小猿
产品经理:别跟我谈条件,10点要演示,距离现在还有15分钟。。。
---------- :小猿
宗旨:满足产品经理的一切不切实际的幻想
例子:
- package main
-
- import (
- "encoding/json"
- "fmt"
- )
-
- type response struct {
- Key string `json:"key"`
- Value string `json:"value"`
- }
-
- func main() {
- // 动态字段
- fields := map[string]string{
- "username": "张三",
- "email": "admin@qq.com",
- "age": "18",
- "workplace": "科技大厦",
- }
-
- // 输出
- var result []*response
-
- for k, v := range fields {
- result = append(result, &response{
- Key: k,
- Value: v,
- })
- }
-
- // json
- s, _ := json.Marshal(result)
- fmt.Printf(string(s))
- }
执行结果:
以上证明了,乱中有序,每次都有小惊喜,人生充满了乐趣,且行且珍惜。(服了,彻底服了,世上还有这种厚颜无耻之人)

解决:
方案一:map无序,slice有序。借slice东风,成就map有序之壮举。
- package main
-
- import (
- "encoding/json"
- "fmt"
- )
-
- type response struct {
- Key string `json:"key"`
- Value string `json:"value"`
- }
-
- func main() {
- // 动态字段
- fields := map[string]string{
- "username": "张三",
- "email": "admin@qq.com",
- "age": "18",
- "workplace": "科技大厦",
- }
-
- // 输出
- var result []*response
-
- // 借借slice东风
- fieldsSort := []string{"username", "email", "age", "workplace"}
-
- for _, v := range fieldsSort {
- if value, ok := fields[v]; ok {
- result = append(result, &response{
- Key: v,
- Value: value,
- })
- }
- }
-
- // json
- s, _ := json.Marshal(result)
- fmt.Printf(string(s))
- }
执行结果:

好吧!到此为止吧 !就这样吧!不要那么多骚操作啦!
还是多思考思考,为什么map一定要无序呢?有序他不香吗?产品经理为啥今天又换了一身衣服?这衣服让我👀无处安放啊?(年轻人,耗子尾汁。。。)
【end】
我为人人,人人为我,美美与共,天下大同。