package mainimport ( "fmt" "sort")// type people []string// func (p people)Len() int{ // return len(p)// }// func (p people)Swap(i,j int){// p[i],p[j] = p[j],p[i]// }// func (p people)Less(i,j int) bool{// return p[i]>p[j]// }// type recover struct{// sort.Interface// }// func (r recover)Less(i,j int)bool{// return r.Interface.Less(j,i)// }// func Recover( data sort.Interface) sort.Interface{// return recover{data}// }/* 定义一个类 */type person struct{ name string age string}func (p person) getName()string{ return p.name}type people []stringfunc (p people)Len()int { return len(p)}func (p people)Swap(i,j int){ p[i],p[j] = p[j],p[i]}func (p people)Less(i,j int)bool{ return p[i] > p[j]}/***定义一个接口,与java的接口定义类似*接口只是对一个标准的定义*不需要继承,只要满足这个接口里面的方法定义都可以认为是这个接口的子类*/type Interface interface{ Len() int Swap(i,j int ) Less(i,j int)bool}func print(data Interface){ data.Swap(1,2) fmt.Println(data)}func main() { p:= person{"左龙龙", "123"} fmt.Println(p.getName()) s := people{"Zeno", "John", "Al", "Jenny"} // fmt.Println(s) // print(s) // fmt.Println(s) // fmt.Println(s) // fmt.Println(sort.Reverse(sort.StringSlice(s))) // sort.Sort(sort.StringSlice(s)) // fmt.Println(s) // Recover(s) // fmt.Println(s) sort.Sort(s) // fmt.Println(s)}/* 重载,在原有的类型上嵌套一个类型,重置的类型覆写 */// https://golang.org/pkg/sort/#Sort