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