Maison  >  Article  >  développement back-end  >  Comment déplacer des éléments d'une tranche à une autre

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

WBOY
WBOYavant
2024-02-10 17:40:081049parcourir

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
}

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]
[]

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer