go программа для сравнения двух массивов и сохранения соответствующих элементов в третьем в golang - PullRequest
0 голосов
/ 14 января 2020

Привет, я новичок в go, и я просто пишу программу для сравнения двух массивов и сохранил соответствующий элемент в третьем, но он не был успешно выполнен


package main

import (
    "fmt"
)

func main(){

    var firstarray =[10] int {1,9,12,16,13,11,14,18,8,12}
     var secondarray =[10] int {9,7,15,8,14,19,34,18,13,11}
    var finalarray [] int

     var i,j,mat int

     for i=0; i<=10; i++{

        for j=0; j<=10; j++{

            if firstarray[i] == secondarray[j]{
                finalarray[mat] == secondarray[j]
                mat++
            }
        }
     }

    fmt.Println("matching no is",finalarray)

}

Ответы [ 3 ]

1 голос
/ 14 января 2020

На самом деле! для вставки в третий массив возникла ошибка Index out of range, поэтому прежде всего вы должны указать длину индекса, чтобы он мог указывать область в массив, где вы хотите сохранить значение.

Также чтобы присвоить значение третьей переменной, вы должны использовать один оператор присваивания (=), а не оператор равенства (==).

Следуйте приведенному ниже примеру.

package main

import (
    "fmt"
)

func main(){

    var firstarray =[10] int {1,9,12,16,13,11,14,18,8,12}
     var secondarray =[10] int {9,7,15,8,14,19,34,18,13,11}
    var finalarray [10]int

     var i,j,mat int

     for i=0; i<10; i++{

        for j=0; j<10; j++{

            if firstarray[i] == secondarray[j]{
                finalarray[mat] = secondarray[j]
                mat++
            }
        }
     }

    fmt.Println("matching no is",finalarray)

}
1 голос
/ 15 января 2020
package main

import (
    "fmt"
)

func main() {
    type void struct{}
    var member void
    firstarray := map[int]void{1: member, 9: member, 12: member, 16: member, 13: member, 11: member, 14: member, 18: member, 8: member}
    secondarray := map[int]void{9: member, 7: member, 15: member, 8: member, 14: member, 19: member, 34: member, 18: member, 13: member, 11: member}

    var finalarray []int
    for k := range firstarray {
        if _, ok := secondarray[k]; ok {
            finalarray = append(finalarray, k)
        }
    }

    fmt.Println("matching no is", finalarray)
}
1 голос
/ 14 января 2020

Основными ошибками в вашем коде являются доступ к массивам за пределами (что можно исправить, перебирая элементы в массивах вместо использования индексов), и построение окончательного массива (который можно создать с помощью добавление, а не присвоение индексам).

Вы также используете == для присвоения, что является ошибкой, поскольку это оператор сравнения. Single равно = является оператором присваивания.

Вот исправленная рабочая версия вашего кода.

package main

import (
    "fmt"
)

func main() {
    firstarray := []int{1, 9, 12, 16, 13, 11, 14, 18, 8, 12}
    secondarray := []int{9, 7, 15, 8, 14, 19, 34, 18, 13, 11}
    var finalarray []int

    for _, a1 := range firstarray {
        for _, a2 := range secondarray {
            if a1 == a2 {
                finalarray = append(finalarray, a2)
            }
        }
    }

    fmt.Println("matching no is", finalarray)

}

Было бы лучше использовать карты для поиска подходящих элементов, с тех пор код может быть O (n), а не O (n ^ 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...