ホームページ > バックエンド開発 > Golang > スライスのコピーの値を変更し、元のスライスに追加します

スライスのコピーの値を変更し、元のスライスに追加します

PHPz
リリース: 2024-02-09 16:36:07
転載
451 人が閲覧しました

スライスのコピーの値を変更し、元のスライスに追加します

PHP では、スライス (Slice) は、配列またはスライスから要素の一部を選択できるようにする一般的に使用されるデータ構造です。ただし、場合によっては、スライスを変更し、変更した値を元のスライスに追加する必要があります。この操作は、スライス コピーの値を変更し、array_splice 関数を使用して元のスライスに変更したコピーを追加することで、PHP で可能になります。この記事では、このメソッドを使用してスライスの変更と追加操作を実装する方法を詳しく説明します。

質問内容

スライスをコピーし、スライス コピー内の項目の値を変更し、そのコピーを元のコピーに追加する関数を作成します。コードはスライスのコピーだけでなく、元のスライスも変更しているようです。

遊園地に行きます

リーリー

実際に見たもの

リーリー

何を期待していますか

import "fmt"

type item struct {
    name   string
    number int
}

func main() {
    names := []string{"a", "b"}
    numbers := []int{1, 2}

    items := []*item{}

    for _, name := range names {
        item := &item{name: name}
        items = append(items, item)
    }

    for n, i := range numbers {
        if n > 0 {
            fmt.println(n, "make a copy of the items")
            itemcopies := make([]*item, len(items))
            copy(itemcopies, items)

            fmt.println(n, "set the numbers on the copies")
            for _, item := range itemcopies {
                item.number = i
            }

            fmt.println(n, "append the copies to the original")
            items = append(items, itemcopies...)
        } else {

            fmt.println(n, "first pass set all the items to the first number")
            for _, item := range items {
                item.number = i
            }
        }
    }

    for n, i := range items {
        fmt.printf("%d %+v\n", n, *i)
    }
}
ログイン後にコピー

Solution

@jimb は正しいです。ポインタをコピーしてください。

struct item に属する copy 関数を定義して新しいコピーを作成することをお勧めします

リーリー

以上がスライスのコピーの値を変更し、元のスライスに追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート