3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
要獲得 GPA 最高的前 3 個(gè),您首先對切片進(jìn)行排序(您已經(jīng)做過),然后創(chuàng)建一個(gè)子切片:
func GetTopThree(applicants []Applicant) []Applicant {
sort.Slice(applicants, func(i, j int) bool {
return applicants[i].GPA > applicants[j].GPA
})
return applicants[:3]
}
要獲取名稱,您可以創(chuàng)建一個(gè)新切片
func GetTopThreeNames(applicants []Applicant) []string {
var topThree []string
for i := 0; i < int(math.Min(3, float64(len(applicants)))); i++ {
topThree = append(topThree, applicants[i].firstName)
}
return topThree
}

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您想分別映射名字和姓氏,這可能是一種方法:
func TopThreeNames(applicants []Applicant) [][2]string {
top := applicants[:int(math.Min(3, float64(len(applicants))))]
var names [][2]string
for _, a := range top {
names = append(names, [2]string{a.firstName, a.secondName})
}
return names
}
該函數(shù)將每個(gè)元素映射Applicant到長度為 2 的數(shù)組,其中第一個(gè)元素等于其名字,第二個(gè)元素等于其名字。
例如(不安全,因?yàn)榍衅拈L度可能為空):
names := TopThreeNames(applicants)
first := names[0]
fmt.Printf("First name: %s and last name: %s\n", first[0], first[1])

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您的任務(wù)真的只是打印出名字,那么這是一種可能的方法
for i := 0; i < 3 && i < len(applicants); i++ {
fmt.Printf("%s %s\n", applicants[i].firstName, applicants[i].secondName)
}
請注意,必須首先對列表進(jìn)行排序,就像其他帖子中顯示的那樣。
- 3 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報(bào)