go language---interface

package main

import (
	"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 []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]
}

/**
*定义一个接口,与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

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325527281&siteId=291194637