golangでスライスの値を変更する方法

PHPz
リリース: 2023-03-30 09:27:56
オリジナル
1655 人が閲覧しました

Go 言語では、スライスは一般的に使用されるデータ構造であり、動的な長さの配列を簡単に処理できます。シナリオによっては、スライス内の 1 つまたは複数の要素の値を変更する必要がある場合があります。この記事では、Go 言語でスライスの値を変更する方法を紹介します。

Go 言語のスライスは参照型であり、基になる配列へのポインタ、スラ​​イスの長さと容量が含まれます。したがって、添え字を介してスライス内の要素にアクセスし、要素を変更できます。たとえば、次のコードは、スライス内の指定された添え字の値を変更する方法を示しています。

package main

import "fmt"

func main() {
   // 定义一个切片
   s := []int{1, 2, 3, 4, 5}

   // 修改第3个元素的值
   s[2] = 100

   // 打印切片的值
   fmt.Println(s) // 输出:[1 2 100 4 5]
}
ログイン後にコピー

上記のコードでは、最初にスライス s を定義し、次に ## を渡します。 #s[ 2]スライス内の 3 番目の要素にアクセスし、それを 100 に変更しました。最後に、スライス s の変更された値を出力します。

上記の方法に加えて、スライスをループして各要素の値を 1 つずつ変更することもできます。たとえば、次のコードは、スライスをループし、スライス内のすべての偶数要素を奇数に変更する方法を示しています。

package main

import "fmt"

func main() {
   // 定义一个切片
   s := []int{1, 2, 3, 4, 5}

   // 遍历切片,将所有偶数修改为奇数
   for i := 0; i < len(s); i++ {
      if s[i] % 2 == 0 {
         s[i] += 1
      }
   }

   // 打印切片的值
   fmt.Println(s) // 输出:[1 3 3 5 5]
}
ログイン後にコピー
上記のコードでは、最初にスライス

s を定義し、次にその各要素をループします。要素の値が偶数の場合は、それに 1 を加えて、奇数に変える。最後に、スライス s の変更された値を出力します。

上記の方法に加えて、組み込み関数

copy を使用してスライスの値を変更することもできます。 copyこの関数は、あるスライスの内容を別のスライスにコピーし、コピーされた要素の数を返すことができます。ターゲット スライスの長さがソース スライスの長さよりも短い場合は、ターゲット スライスの長さの要素のみがコピーされます。ターゲット スライスの長さがソース スライスの長さよりも長い場合は、要素をコピーした後、ソース スライスの残りのターゲット スライス要素は変更されません。たとえば、次のコードは、copy 関数を使用して、あるスライスの一部の要素を別のスライスにコピーする方法を示しています。

package main

import "fmt"

func main() {
   // 定义一个切片
   s1 := []int{1, 2, 3, 4, 5}

   // 定义另一个切片,并复制s1中的部分元素到其中
   s2 := make([]int, 3, 5)
   copy(s2, s1[2:5])

   // 修改s2中的元素值
   for i, v := range s2{
      s2[i] = v * 10
   }

   // 打印切片的值
   fmt.Println(s1) // 输出:[1 2 3 4 5]
   fmt.Println(s2) // 输出:[30 40 50]
}
ログイン後にコピー
上記のコードでは、まずスライス

s1 を定義し、次に s1 から s1[2:5] までを取得します。 2 から 4 までの添え字を持つ要素を別のスライス s2 に移動します。次に、s2 をループし、その中のすべての要素の値を 10 で乗算します。最後に、s1s2 の値を出力します。s1 は変更されておらず、# の要素の値が確認できます。 ##s2 すべてが元の 10 倍の大きさになりました。 要約すると、Go 言語では添え字、ループ、

copy

関数を使用してスライスを変更できます。特定のアプリケーションでは、さまざまなシナリオに従ってスライスの値を変更するための適切な方法を選択できます。

以上がgolangでスライスの値を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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