php エディター Apple は、あるスライスから別のスライスに要素を移動する方法を紹介します。プログラミングでは、スライスは複数の要素を格納できる一般的に使用されるデータ構造です。場合によっては、あるスライスから要素を取り出して別のスライスに移動する必要があります。このプロセスには、要素の削除、挿入、インデックス付け操作などが含まれる場合があります。次に、誰もがスライスに関する関連知識をよりよく理解し、適用できるように、この操作を実装する方法について詳しく説明します。
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 }
伝達関数として、スライス arr0 の要素をスライス arr1 と空のスライス arr0 に転送する予定です。
しかし成功しませんこれは私の出力です
リーリー
転送後、次の結果が必要です。 [] [1 2 3 4 5] しかし実際には、main 関数の arr0 と arr1 は同じままです。これがうまくいかない理由を誰か教えてもらえますか?
私の記憶では、次のようになっているはずです
伝達関数の実行後解決策これらの 2 行:
リーリー
関数内のローカル変数arr1 と
arr0 を変更します。これらの変数はたまたまポインタですが、
main によって提供される入力ポインタの単なるコピーであり、入力ポインタへの
参照 ではありません。
arr1 および
arr0 ポインターが指すものを変更すると、
main によって提供される値が変更されることがわかります。
リーリー
以上が要素をあるスライスから別のスライスに移動する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。