type Student struct {
Name string
Age int
}
func (s Student) test() {
fmt.Println("student test....")
}
func (s Graduate) test() {
fmt.Println("Graduate test....")
}
type Pupil struct {
Student
}
type Graduate struct {
Student
}
func main() {
student1 := Pupil{
Student{
Name: "Tom",
Age: 12,
},
}
student2 := Graduate{
Student{
Name: "Kevin",
Age: 15,
},
}
student1.test()
student2.test()
}
实现sort接口 对切片元素进行排序
package main
import (
"fmt"
"math/rand"
"sort"
)
type Person struct {
Age int
Name string
}
type PersonSlice []Person
func (s PersonSlice) Len() int {
return len(s)
}
// 按年龄降序排
func (s PersonSlice) Less(i, j int) bool {
return s[i].Age > s[j].Age
}
// 交换i j位置的元素
func (s PersonSlice) Swap(i, j int) {
//temp := s[i]
//s[i] = s[j]
//s[j] = temp
s[i], s[j] = s[j], s[i]
}
func main() {
var persons PersonSlice
for i := 0; i < 10; i++ {
person := Person{
Age: rand.Intn(100),
Name: fmt.Sprintf("Person-%d", i),
}
persons = append(persons, person)
}
for i := range persons {
fmt.Println(persons[i])
}
fmt.Println("=========")
sort.Sort(persons)
for i := range persons {
fmt.Println(persons[i])
}
}
{81 Person-0}
{87 Person-1}
{47 Person-2}
{59 Person-3}
{81 Person-4}
{18 Person-5}
{25 Person-6}
{40 Person-7}
{56 Person-8}
{0 Person-9}
=========
{87 Person-1}
{81 Person-0}
{81 Person-4}
{59 Person-3}
{56 Person-8}
{47 Person-2}
{40 Person-7}
{25 Person-6}
{18 Person-5}
{0 Person-9}