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

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

如何檢查切片中的元素并操作另一個(gè)切片(如果值存在或不存在)

如何檢查切片中的元素并操作另一個(gè)切片(如果值存在或不存在)

Go
海綿寶寶撒 2023-07-17 16:25:33
我正在用 Go 編寫一個(gè)程序,它應(yīng)該檢查切片的名稱。如果該名稱存在,則應(yīng)在另一個(gè)切片中輸入“YES”,如果不存在則應(yīng)輸入“NO”。名稱切片應(yīng)由用戶輸入,并且應(yīng)在輸入值時(shí)開始檢查。我寫了一些代碼,但似乎不起作用。package mainimport (    "fmt")func main() {    var limit int    var names string    fmt.Scanln(&limit)    arr := make([]string, limit)    yn := make([]string, limit)    for i := 0; i < limit; i++ {        fmt.Scanln(&names)        for _, a := range arr {            if a == names {                yn = append(yn, "YES")            } else {                arr = append(arr, names)                yn = append(yn, "NO")            }        }    }    fmt.Println(yn)}輸出應(yīng)該是這樣的用戶輸入的值:5史蒂夫約翰雷恩珍娜約翰輸出:不不不不是的我得到的錯(cuò)誤是一個(gè)由一堆 YES 和 NO 值組成的大數(shù)組,開頭有 2 個(gè)空元素。
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

第一個(gè)解決方案

這就是你想要的:


func main() {


    var limit int

    var name string

    _, err := fmt.Scanln(&limit)

    if err != nil {

        fmt.Println(err)

    }


    var names []string

    var presence []string


    for i := 0; i < limit; i++ {


        _, err := fmt.Scanln(&name)

        if err != nil {

            fmt.Println(err)

        }


        var exist = false

        for _, a := range names {

            if a == name {

                exist = true

                break

            }

        }


        if !exist {

            names = append(names, name)

            presence = append(presence, "NO")

        } else {

            presence = append(presence, "YES")

        }

    }

    fmt.Println(presence)

}

首先Scanln返回 ,error您需要檢查它。

第二:追加到數(shù)組必須在內(nèi)循環(huán)之外。嘗試使用 debugPrintln()來調(diào)試您的算法。

將代碼移至單獨(dú)的函數(shù)

為了清楚起見,我建議將存在性檢查移至單獨(dú)的函數(shù):


func exists(a []string, element string) bool {

    for _, e := range a {

        if e == element {

            return true

        }

    }


    return false

}


func main() {

    var limit int

    var name string

    _, err := fmt.Scanln(&limit)

    if err != nil {

        fmt.Println(err)

    }


    var names []string

    var presence []string


    for i := 0; i < limit; i++ {


        _, err := fmt.Scanln(&name)

        if err != nil {

            fmt.Println(err)

        }


        if !exists(names, name) {

            names = append(names, name)

            presence = append(presence, "NO")

        } else {

            presence = append(presence, "YES")

        }

    }

    fmt.Println(presence)

}

優(yōu)化

在前面的代碼中,我們?cè)诿看窝h(huán)中將字符串?dāng)?shù)組傳遞給函數(shù)。如果數(shù)組更大,那就不好了,最好將指向字符串?dāng)?shù)組的指針傳遞給函數(shù)(或指向字符串的指針數(shù)組)。


查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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