[Go] Int, String, Struct 정렬

2022. 7. 23. 17:31·Go
반응형

Input

package sorts

import (
	"fmt"
	"sort"
)

type person struct {
	name string
	age  int
	loc  *location
}

type location struct {
	nation string
	city   string
}

func newPerson(name string, age int, nation, city string) *person {
	return &person{
		name: name,
		age:  age,
		loc: &location{
			nation: nation,
			city:   city,
		},
	}
}

func SortStructMain() {
	// Integer 정렬
	numbers := []int{1, 3, 4, 2, 5}
	slice := sort.IntSlice(numbers)
	sort.Sort(slice)
	fmt.Println(numbers)

	// Integer 역정렬
	sort.Sort(sort.Reverse(slice))
	fmt.Println(numbers)

	// String 정렬
	strings := []string{"apple", "pineapple", "banana", "kiwi", "grape"}
	sort.Sort(sort.StringSlice(strings))
	fmt.Println(strings)

	// Struct 정렬
	persons := make([]person, 0)
	persons = append(persons, *newPerson("User1", 10, "Korea", "Seoul"))
	persons = append(persons, *newPerson("User2", 30, "USA", "LA"))
	persons = append(persons, *newPerson("User3", 40, "Japan", "Tokyo"))
	persons = append(persons, *newPerson("User4", 20, "Austraila", "Sideny"))
	persons = append(persons, *newPerson("User5", 50, "China", "SangHai"))
	fmt.Println(persons)

	// Person age 정렬
	sort.Slice(persons, func(i, j int) bool {
		return persons[i].age < persons[j].age
	})
	fmt.Println(persons)

	// Person loc.nation 정렬
	sort.Slice(persons, func(i, j int) bool {
		return persons[i].loc.nation < persons[j].loc.nation
	})
	fmt.Println(persons)
}

Output

[1 2 3 4 5]
[5 4 3 2 1]
[apple banana grape kiwi pineapple]
[{User1 10 {Korea Seoul}} {User2 30 {USA LA}} {User3 40 {Japan Tokyo}} {User4 20 {Austraila Sideny}} {User5 50 {China SangHai}}]
[{User1 10 {Korea Seoul}} {User4 20 {Austraila Sideny}} {User2 30 {USA LA}} {User3 40 {Japan Tokyo}} {User5 50 {China SangHai}}]
[{User4 20 {Austraila Sideny}} {User5 50 {China SangHai}} {User3 40 {Japan Tokyo}} {User1 10 {Korea Seoul}} {User2 30 {USA LA}}]
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
'Go' 카테고리의 다른 글
  • [Go] Factory Pattern(팩토리 패턴) 구현
  • [Go] Channel 이용한 Queue
  • [Go] Linked List 구현
  • [Go] Panic recover 하기
상쾌한기분
상쾌한기분
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
  • 전체
    오늘
    어제
    • 분류 전체보기 (251)
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (5)
        • Spring (2)
        • 프로젝트 (1)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (2)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (26)
        • AI (9)
        • Langchain (8)
        • Web (18)
        • Git (8)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    prompt
    Golang
    Kafka
    Redis
    MYSQL
    티스토리챌린지
    오블완
    performance
    git
    ollama
    CDC
    백준
    LLM
    go
    Langchain
    python
    파이썬
    fluentd
    docker
    http
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
[Go] Int, String, Struct 정렬
상단으로

티스토리툴바