golang 对象数组与map数组排序


package main

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

func main() {
	/* 对象排序 */
	family := []Person{
		{"Alice", 23},
		{"Eve", 2},
		{"Bob", 25},
	}
	sort.Sort(ByAge(family))
	fmt.Println("排序结果为:", family) // [{Eve 2} {Alice 23} {Bob 25}]

	familyA := []map[string]interface{}{}
	familyA = append(familyA, map[string]interface{}{
		"aaa": "sdsdsd",
		"bbb": 25,
	}, map[string]interface{}{
		"aaa": "hahah",
		"bbb": 22,
	}, map[string]interface{}{
		"aaa": "咋地?",
		"bbb": 19,
	})
	sort.Sort(ByAgeA(familyA))

	fmt.Println("map排序结果为:", familyA) // [{Eve 2} {Alice 23} {Bob 25}]
}

type Person struct {
	Name string
	Age  int
}

type ByAge []Person

func (a ByAge) Len() int           { return len(a) }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
func (a ByAge) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }

/* map 排序 */

type ByAgeA []map[string]interface{}

func (a ByAgeA) Len() int { return len(a) }
func (a ByAgeA) Less(i, j int) bool {
	_str1 := fmt.Sprintf("%#v", a[i]["bbb"])
	_str2 := fmt.Sprintf("%#v", a[j]["bbb"])
	_count1, _ := strconv.Atoi(_str1)
	_count2, _ := strconv.Atoi(_str2)
	return _count1 < _count2
}
func (a ByAgeA) Swap(i, j int) { a[i], a[j] = a[j], a[i] }

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM