Как я могу заменить одну часть на другую в go - PullRequest
0 голосов
/ 10 марта 2020

Хотелось бы посмотреть, есть ли простой способ заменить часть слайса всеми значениями другого слайса. Например:

x := []int{1,2,0,0}
y := []int{3,4}

// goal is x == {1,2,3,4}

x[2:] = y    // compile error
x[2:] = y[:] // compile error

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

1 Ответ

3 голосов
/ 10 марта 2020

Вы можете использовать встроенную копию :

Встроенная функция копирования копирует элементы из исходного слайса в целевой слайс.

package main

import "fmt"

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

    copy(x[2:], y)

    fmt.Println(x) // [1 2 3 4]
}

Кража из вышеупомянутого комментария , вы можете узнать больше о ломтиках здесь:

Я также нашел этот пост в блоге информативным: https://divan.dev/posts/avoid_gotchas/#arrays -и-ломтики

...