dongqiyou0303 2017-04-10 06:19

# Golang：按切片字段排序

I have the following Structs:

``````type Parent struct {
id       string
children []Child
}

type Child struct {
id string
}
``````

I have made a slice of Parents with the following values:

``````parents := make([]Parent, 0)

p1 := Parent {
"3",
[]Child {
{"2"},
{"3"},
{"1"},
},
}

p2 := Parent {
"1",
[]Child {
{"8"},
{"9"},
{"7"},
},
}

p3 := Parent {
"2",
[]Child {
{"5"},
{"6"},
{"4"},
},
}

parents = append(parents, p1, p2, p3)
``````

I am trying to sort the "parents" slice in the following order:

``````1) First, sort all Parents by Parent.id

2) Next, sort each Parent's "children" slice by Child.id
``````

The expected result is something like:

``````[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
``````

Is there a way to do this in Go?

• 写回答

#### 1条回答默认 最新

• dsqtl335227 2017-04-10 07:05
关注

I got it to work using the following code:

``````// sort each Parent in the parents slice by Id
sort.Slice(parents, func(i, j int) bool {return parents[i].id < parents[j].id})

// for each Parent, sort each Child in the children slice by Id
for _, parent := range parents {
sort.Slice(parent.children, func(i, j int) bool {return parent.children[i].id < parent.children[j].id})
}
``````

Special thanks to @Volker for mentioning the sort.Slice function! I had no idea it existed!

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 关于螺旋焊缝的图像处理
• ¥15 qt 散点图自定义图形
• ¥100 将USDZ文件转化为带颜色的OBJ文件
• ¥15 对象代号: , 表单: 不存在!
• ¥15 WebSocket的问题
• ¥15 centos上启动kylin后网页报错404
• ¥20 使用hackrf进行信号收发时接收到的信号幅度太小
• ¥15 WebSocket的问题
• ¥15 BDSBAS-B1C和B1C信号有什么不同
• ¥15 在半圆平面内随机生成点坐标