1、打开获取文件 os.Open
2、bufio.NewReader() 用带缓冲的io读文件句柄
3、err == eof 判断一下是否为文件末尾
4、写一个pasrse函数解析每一行的数据(ip,url,status),字段可以通过strings.Split 或 空白分割的 strings.Fields 方法来获取。
当文件格式索引模式有问题,可以根据返回的切片个数来判断,并抛出错误。必须保证在切片索引范围之内可以访问到值,否则会报错。
状态码可以通过 strconv.Atoi将字符串转换为数字
5、定义3个 map[string]int 类型的变量,使用 ipSats[ip]++的方式对ip、状态码等进行计数统计。
6、对获得的状态码数据进行排序
ipStatsSlice := make([][]interface{},0,len(ipStats))
for k,v :=range ipStats {
ipStatsSlice=append(ipStatsSlice,[]interface{}{k,v})
}
//冒泡
sort.Slice(ipStatsSlice,func(i,j int){
count1:=ipStatsSlice[i][1].(int)
count2:=ipStatsSlice[j][1].(int)
return count1 < count2
})
//获取后10个数据
for i:=len(ipStatsSlice); i>=0;i--{
fmt.Println(ipStatsSlice[i])
}
//获取前10个数据
topn:=10
for i :=len(ipStatsSlice) -1 ;i>=0;len(ipStatsSlice)-topn;i--{
fmt.Println(ipStatsSlice[i])
}
文档更新时间: 2023-04-12 11:18 作者:张尚