如何对结构体本身排序

cash · 2019-08-27 20:44:38 · 1146 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-08-27 20:44:38 的主题,其中的信息可能已经有所发展或是发生改变。

困扰我一个问题。我可以对map排序但是结构体本身怎么排序呢。比如说 type Per struct { B int A int }

怎么排序成

type Per struct { A int B int } 在地铁上手机敲得,不好看见谅,各位大佬


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1146 次点击  ∙  1 赞  
加入收藏 微博
5 回复  |  直到 2019-09-04 10:49:50
cash
cash · #1 · 6年之前

跪求大佬解答

cash
cash · #2 · 6年之前

在线等。好急啊。能有大佬解答吗

polaris
polaris · #3 · 6年之前

大哥,这是什么需求,你就不能自己定义成这个顺序,而且,顺序不一样,占用的内存也不一样,所以没法自动排序

cash
cash · #4 · 6年之前
polarispolaris #3 回复

大哥,这是什么需求,你就不能自己定义成这个顺序,而且,顺序不一样,占用的内存也不一样,所以没法自动排序

对接第三方接口字段太多,我就想看看有没有可以结构体排序的。人工排序累死。我再看看。实在不行只能手动排了

wn0112
wn0112 · #5 · 6年之前

用反射可以

package main

import (
    "fmt"
    "reflect"
    "sort"
)

type Student struct {
     Name string
     Age int16
     Score int16
     Address string
}

func main() {
    sortedKeys := make([]string, 0)
    s := Student{"Nancy", 18, 89, "London"}
    for i := 0; i < reflect.ValueOf(s).Type().NumField(); i++ {
        sortedKeys = append(sortedKeys, reflect.ValueOf(s).Type().Field(i).Name)
    }
    sort.Strings(sortedKeys)
    fmt.Println(sortedKeys)
}

output: [Address Age Name Score]

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传