Golang удаляет двойные вставки из функции добавления фрагмента "проверено, но не использовано" - PullRequest
0 голосов
/ 13 октября 2018

Я не могу запустить эту тестовую программу Go lang.Компилятор продолжает выдавать ошибку при вызове функции append () ниже с ошибкой «оценено, но не использовано».Я не могу понять, почему.

package main

import (
    "fmt"
)

func removeDuplicates(testArr *[]int) int {

    prevValue := (*testArr)[0]
    for curIndex := 1; curIndex < len((*testArr)); curIndex++ {
        curValue := (*testArr)[curIndex]
        if curValue == prevValue {
            append((*testArr)[:curIndex], (*testArr)[curIndex+1:]...)
        }
        prevValue = curValue
    }
    return len(*testArr)
}

func main() {
    testArr := []int{0, 0, 1, 1, 1, 2, 2, 3, 3, 4}

    nonDupSize := removeDuplicates(&testArr)

    fmt.Printf("nonDupSize = %d", nonDupSize)
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Ответ Питера прибил его, ошибка компиляции была из-за того, что не удалось получить возвращаемое значение из append ()

0 голосов
/ 17 октября 2018

ошибка "оценена, но не использована" .

Код ниже - моя идея.Я думаю, что ваш код не очень понятен.

package main

import (
    "fmt"
)

func removeDuplicates(testArr *[]int) int {
    m := make(map[int]bool)
    arr := make([]int, 0)

    for curIndex := 0; curIndex < len((*testArr)); curIndex++ {
        curValue := (*testArr)[curIndex]
        if has :=m[curValue]; !has {
            m[curValue] = true
            arr = append(arr, curValue)
        }
    }
    *testArr = arr
    return len(*testArr)
}

func main() {
    testArr := []int{0, 0, 1, 1, 1, 2, 2, 3, 3, 4}

    nonDupSize := removeDuplicates(&testArr)

    fmt.Printf("nonDupSize = %d", nonDupSize)
}
...