Go语言学习笔记六

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

对结构体数据进行排序
完整实现sort.Interface进行结构体排序详细代码如下。

package main
import{
	"fmt"
	"sort"
}
type HeroKind int
//定义HeroKind类型
const(
	None HeroKind=Warrior
			      Tank
			      Asassion
			      Mage
)
type Hero struct{
	name string
	kind HeroKind
}
type Heros []*Hero //定义Hero数组
func (h *Heros) Len() int {
	return len(h)
}
func (h *Heros) Less(i,j int) bool {
	if h[i].kind != h[j].kind {
		return h[i].kind < h[j].kind
	}
	return h[i].name < h[j].name
}
func (h *Heros) Swap(i,j int){
	h[i], h[j] = h[j], h[i]
}
func main(){
	heros := Heros{
		&Hero{"卡牌大师", Mage},
		&Hero{"剑圣", Assassion},
		&Hero{"布隆", Tank},
		&Hero{"盖伦", Warrior}
	}
	sort.Sort(heros)
	for _,v := range heros{
		fmt.Printf("%+v\n",v)
	}
}

第六行将int声明为HeroKind英雄类型后面会将这个类型当作枚举来使用。
第八行定义了一些英雄的类型作为枚举值。
第十八行为了方便实现sort.Interface接口将[]*Hero定义为Heros类型。
第十九行实现Len()方法
第二十二行实现Less()方法
第二十四行当英雄类型不一样的时候根据类型枚举值大小排序。
第二十六行默认按照英雄名字大小排序
第二十八行实现Swap()方法
第三十二行准备一系列数据
第三十八行使用sort包进行排序
第三十九行对排序好的数据进行遍历

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go