Удалить элемент из фрагмента - PullRequest
0 голосов
/ 14 октября 2018

У меня были некоторые проблемы со срезами Голанга.

Я понимаю, что срез - это указатель на базовый массив, но некоторые из них кажутся немного странными.

Я пыталсяудалить элемент из фрагмента Мне удалось сделать это путем копирования фрагмента. Есть ли лучший способ?

В приведенном ниже коде оригинальный фрагмент изменен.

package main

import (
    "fmt"
)

func main() {
    mySlice := []int{1,2,3,4,5,6}
    pos := 3

    slicePart1 := mySlice[:pos+1]
    slicePart2 := mySlice[pos+2:]

    fmt.Println(mySlice)
    fmt.Println(slicePart1)
    fmt.Println(slicePart2)
    new := append(slicePart1,slicePart2...)
    fmt.Println(new)
    fmt.Println(mySlice)
}

1 Ответ

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

Например,

package main

import "fmt"

func main() {
    s := []int{1, 2, 3, 4, 5, 6}
    fmt.Println(s)
    i := 3
    fmt.Println(i)
    s = append(s[:i], s[i+1:]...)
    fmt.Println(s)
}

Детская площадка: https://play.golang.org/p/SVQEUE7Rrei

Выход:

[1 2 3 4 5 6]
3
[1 2 3 5 6]

Или, если порядок не важен,

package main

import "fmt"

func main() {
    s := []int{1, 2, 3, 4, 5, 6}
    fmt.Println(s)
    i := 3
    fmt.Println(i)
    s[i] = s[len(s)-1]
    s = s[:len(s)-1]
    fmt.Println(s)
}

Детская площадка: https://play.golang.org/p/lVgKew3ZJNF

Вывод:

[1 2 3 4 5 6]
3
[1 2 3 6 5]

Некоторые другие способы см. SliceTricks .

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