Nano Hash - криптовалюты, майнинг, программирование

Golang добавляет фрагмент к фрагменту фрагмента, тогда фрагмент всегда будет влиять на фрагмент фрагмента?

Сегодня получил такой код:


import "fmt"

func main() {
    var results [][]int
    combination := []int{1, 2, 3, 4, 5}
    results = append(results, combination)
    fmt.Println(results)

    combination2 := combination[:len(combination)-1]
    combination2 = append(combination2, 0)
    fmt.Println(results)

}

вывод показывает:

[[1 2 3 4 5]]
[[1 2 3 4 0]]

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

12.09.2020

Ответы:


1

Ну, result не затрагивается напрямую, но combination (или, скорее, его базовый массив).

Вы нарезаете combination, чтобы получить combination2. Их базовый массив одинаков.

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

Посмотрите на этот пример: https://play.golang.org/p/m0bPJDj9kHs.

P.S. Вы можете предотвратить это, используя операцию copy().

13.09.2020
  • большое спасибо! функция copy() решила эту проблему! 13.09.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

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