é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.
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
Ces deux lignes :
arr1 = &tmp arr0 = &s
Modifiez les variables locales dans une fonction arr1
和 arr0
。这些变量恰好是指针,但它们只是 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 arr1
和 arr0
指针指向的内容,而不是指针本身,那么您将看到 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!