第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何輸出迭代切片的前 N ??個(gè)元素?

如何輸出迭代切片的前 N ??個(gè)元素?

Go
慕尼黑的夜晚無繁華 2023-01-03 15:39:22
我需要取申請人的名字、名字和 GPA,然后只輸出前 N 個(gè)申請人。比如我有5個(gè)申請者,但是只有N=3可以通過。為了完成這項(xiàng)任務(wù),我決定使用一片結(jié)構(gòu)。該結(jié)構(gòu)如下所示:type Applicant struct {    firstName  string    secondName string    GPA        float64}我創(chuàng)建了一個(gè)切片并對其進(jìn)行了初始化:applicants := []Applicant{}...fmt.Scan(&firstName, &lastName, &GPA)applicants = append(applicants, Applicant{firstName, lastName, GPA})現(xiàn)在我的任務(wù)是只輸出GPA 最高的前 3名申請人的姓名。我已經(jīng)從最好的 GPA 到最差的 GPA 進(jìn)行了排序。我嘗試像這樣輸出申請者切片,但出現(xiàn)錯(cuò)誤:for _, applicant := range applicants {    fmt.Println(applicant.secondName + " " + applicant.secondName)}你能幫我輸出切片名稱嗎?
查看完整描述

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

}


查看完整回答
反對 回復(fù) 2023-01-03
?
藍(lán)山帝景

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])


查看完整回答
反對 回復(fù) 2023-01-03
?
aluckdog

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)行排序,就像其他帖子中顯示的那樣。


查看完整回答
反對 回復(fù) 2023-01-03
  • 3 回答
  • 0 關(guān)注
  • 117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號