package mainimport ("fmt")//求数组中涌现次数最多的值和次数func arrayMaxCount(args []int) (Status bool, MaxCount int, MaxValue []int) { /【1】没值直接退出/ if len(args) == 0 { return false, 0, nil} /【2】求出每个值对应涌现的次数,例:[值:次数,值:次数]/ newMap := make(map[int]int) for _, value := range args { if newMap[value] != 0 { newMap[value]++ } else { newMap[value] = 1 } } /【3】求出涌现最多的次数/ var allCount []int //所有的次数 var maxCount int //涌现最多的次数 for _, value := range newMap { allCount = append(allCount, value) } maxCount = allCount[0] for i := 0; i < len(allCount); i++ { if maxCount < allCount[i] { maxCount = allCount[i] } } /【4】求数组中涌现次数最多的值,例:[8,9]这个两个值涌现的次数一样多/ var maxValue []int for key, value := range newMap { if value == maxCount { maxValue = append(maxValue, key) } } return true, maxCount, maxValue}//求数组中值涌现的次数func ArrayCountValues(args []string) map[string]int { /【2】求出每个值对应涌现的次数,例:[值:次数,值:次数]/ newMap := make(map[string]int) for _, value := range args { if newMap[value] != 0 { newMap[value]++ } else { newMap[value] = 1 } } return newMap}func main() { s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9} bool, maxCount, maxValue := arrayMaxCount(s) //获取值涌现次数最多 fmt.Println(bool, maxCount, maxValue) //显示结果: true 2 [9] 阐明: 值 9 涌现了两次 //值涌现的次数 类似于PHP array_count_values实例 people := []struct { Name string Age int edu string }{ {"Alice", 25, "北京大学"}, {"Elizabeth", 75, "清华大学"}, {"Alice", 75, "中国公民大学"}, {"Bob", 75, "天津大学"}, {"Alice", 75, "武汉大学"}, {"Bob", 25, "武汉大学"}, {"Colin", 25, "武汉大学"}, {"Elizabeth", 25, "北京大学"}, } var arr []string for _, ele := range people { arr = append(arr, ele.edu) } newArr := ArrayCountValues(arr) fmt.Println(newArr) // map[中国公民大学:1 北京大学:2 天津大学:1 武汉大学:3 清华大学:1]}
