日: 2019年5月14日

  • go言語でのstringやint、structのsort

    go言語でのstringやint、structのsort

    はじめに

    どの言語でも一発でsortするメソッドは用意されているものだが、あまり馴染みのない言語だと時間がかかるものだ。
    go言語でのsortについてまとめる。

    以下、自分用メモ。

    コード

    package main
    
    import (
    	"fmt"
    	"sort"
    )
    
    func main() {
    
    	i := []int{5, 3, 2, 8, 7}
    	s := []string{"c", "a", "z"}
    
    	p := []struct {
    		Name  string
    		Point int
    	}{
    		{"AAA", 50},
    		{"BBB", 40},
    		{"CCC", 10},
    		{"DDD", 20},
    	}
    
    	// Intをsort(昇順)
    	sort.Ints(i)
    	fmt.Println(i)
    
    	// stringをアルファベット順にsort
    	sort.Strings(s)
    	fmt.Println(s)
    
    	// structをStringでsort (名前順)
    	sort.Slice(p, func(i, j int) bool { return p[i].Name < p[j].Name })
    	fmt.Println(p)
    
    	// structをIntでsort (昇順)
    	sort.Slice(p, func(i, j int) bool { return p[i].Point < p[j].Point })
    	fmt.Println(p)
    
    }

    出力結果

    [2 3 5 7 8]
    [a c z]
    [{AAA 50} {BBB 40} {CCC 10} {DDD 20}]
    [{CCC 10} {DDD 20} {BBB 40} {AAA 50}]

     

    golang の書籍

    golang の書き方ではなく、お作法を学ぶことができる良書。