zoukankan      html  css  js  c++  java
  • Go的sort接口实现

    package main
    
    import (
        "fmt"
        "sort"
        "time"
    )
    
    type Track struct {
        Title  string
        Artist string
        Album  string
        Year   int
        Length time.Duration
    }
    
    type Tracks []Track
    
    func ParseDurationTime(s string) time.Duration {
        d, err := time.ParseDuration(s)
        if err != nil {
            return ParseDurationTime("0s")
        } else {
            return d
        }
    }
    
    // {{{ implementation of Sort interface
    // Len is the number of elements in the collection.
    func (x Tracks) Len() int {
        return len(x)
    }
    
    // Less reports whether the element with
    // index i should sort before the element with index j.
    func (x Tracks) Less(i, j int) bool {
        return x[i].Year < x[j].Year
    }
    
    // Swap swaps the elements with indexes i and j.
    func (x Tracks) Swap(i, j int) {
        x[i], x[j] = x[j], x[i]
    }
    
    // end implementation of Sort interface }}}
    
    var tracks = Tracks{
        {Title: "C#", Artist: "Delu", Album: "Reading", Year: 2017, Length: ParseDurationTime("3m38s")},
        {Title: "Go", Artist: "Anderson", Album: "Reading", Year: 2018, Length: ParseDurationTime("3m38s")},
    
        {Title: "Java Bible", Artist: "Js", Album: "Reading", Year: 2016, Length: ParseDurationTime("3m38s")}}
    
    //main function
    func main() {
    
        sort.Sort(tracks)
    
        for key, value := range tracks {
            fmt.Printf("%v:%v 
    ", key, value)
        }
    }
    

      

  • 相关阅读:
    C:函数指针、回调函数
    C:内存分配、内存中五大区
    C:指针
    C:进制
    C:预编译指令
    C:矩形相交、相包含、相离关系判断
    C:结构体
    C:函数
    C:数组
    C: 冒泡排序
  • 原文地址:https://www.cnblogs.com/linkanyway/p/golang-sortable-interface.html
Copyright © 2011-2022 走看看