Maison > développement back-end > Golang > le corps du texte

Comment déplacer des éléments d'une tranche à une autre

WBOY
Libérer: 2024-02-10 17:40:08
avant
1046 Les gens l'ont consulté

Comment déplacer des éléments dune tranche à une autre

éditeur php Apple vous présentera comment déplacer des éléments d'une tranche à une autre. En programmation, une tranche est une structure de données couramment utilisée qui peut stocker plusieurs éléments. Parfois, nous devons retirer un élément d’une tranche et le déplacer vers une autre tranche. Ce processus peut impliquer des opérations de suppression, d'insertion, d'indexation d'éléments, etc. Ensuite, nous discuterons en détail de la manière de mettre en œuvre cette opération pour aider chacun à mieux comprendre et appliquer les connaissances pertinentes en matière de slicing.

Contenu des questions

package main

import (
    "fmt"
)

func main() {
    arr0 := []int{
        1,2,3,4,5,
    }
    arr1 := []int{}

    fmt.println(arr0)
    fmt.println(arr1)
    fmt.println("transferring...")
    transfer(&arr0, &arr1)
    fmt.println(arr0)
    fmt.println(arr1)
}

func transfer(arr0 *[]int, arr1 *[]int) {
    tmp := make([]int, 0)
    for i:=0;i<len(*arr0);i++ {
        tmp = append(tmp, (*arr0)[i])
    }

    arr1 = &tmp
    s := make([]int, 0)
    arr0 = &s
}
Copier après la connexion

Pour la fonction de transfert, je prévois de transférer les éléments de la tranche arr0 vers la tranche arr1 et la tranche vide arr0

Mais ça n'a pas marché

Voici ma sortie

[1 2 3 4 5]
[]
transferring...
[1 2 3 4 5]
[]
Copier après la connexion

Après le transfert, j'ai besoin des résultats suivants. [] [1 2 3 4 5] Mais en fait, arr0 et arr1 dans la fonction principale restent les mêmes !

Quelqu’un peut-il me dire pourquoi cela ne fonctionne pas ?

Je pense que dans ma mémoire, ça devrait être comme ça

Après avoir exécuté la fonction de transfert

Solution

Ces deux lignes :

arr1 = &tmp
arr0 = &s
Copier après la connexion

Modifiez les variables locales dans une fonction arr1arr0 。这些变量恰好是指针,但它们只是 main en une copie du pointeur d'entrée fourni - elles ne sont pas une référence au pointeur d'entrée.

Si vous modifiez arr1arr0 指针指向的内容,而不是指针本身,那么您将看到 main la valeur fournie change :

*arr1 = tmp
*arr0 = s
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!