ホームページ  >  記事  >  バックエンド開発  >  golangでスライスの値を変更する方法

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

青灯夜游
青灯夜游オリジナル
2023-01-05 18:59:403917ブラウズ

変更方法: 1. append() 関数を使用して新しい値を追加します (構文 "append(slice, value list)"; 2. append() 関数を使用して要素を削除します (構文 "append) (a[:i]" , a[i N:]...)"; 3. インデックスに従って値を直接再割り当てします。構文は「スライス名 [インデックス] = 新しい値」です。

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

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語でスライスを追加、削除、変更、クエリする

  • スライスは動的配列であり、追加関数を使用できます。要素を追加する()関数
  • Go言語ではスライス要素を削除する特別な方法はなく、スライス自体の特性を利用して要素を削除することができます。
  • スライスは参照型であるため、元の内容は代入によって変更されます。Go にはスライスをコピーする copy() 関数が用意されています。

1. 要素を追加します

package main
import "fmt"
func main() {
 a := []int{}
 a = append(a, 1)
 a = append(a, 2)
 a = append(a, 3, 4, 5) //添加多个元素
 fmt.Printf("a: %v\n", a)
 fmt.Println("---------------------")
 a1 := []int{3, 4, 5}
 a2 := []int{1, 2}
 a2 = append(a2, a1...) //添加另外一个切片进去
 fmt.Printf("a2: %v\n", a2)
}
//输出结果如下
a: [1 2 3 4 5]
---------------------
a2: [1 2 3 4 5]

#2. 要素の削除

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

##
package main
import "fmt"
func main() {
 var s1 = []int{1, 2, 3, 4}
 fmt.Println("---删除之前---")
 fmt.Printf("s1: %v\n", s1)
 //删除3这个元素,它的下标索引为2
 s1 = append(s1[:2], s1[3:]...)
 fmt.Println("---删除之后---")
 fmt.Printf("s1: %v\n", s1)
}
//执行结果如下
---删除之前---
s1: [1 2 3 4]
---删除之后---
s1: [1 2 4]

要素を削除する式:

スライスaからインデックスindexを持つ要素を削除するには、操作方法は次のとおりです。

a = append(a[:index], a[index+1:]...)

3. スライス要素を変更します

package main
import "fmt"
func main() {
 var s1 = []int{1, 2, 3, 4, 5}
 s1[1] = 100 //索引1的值改为100
 fmt.Printf("s1: %v\n", s1)
}
//输出结果如下
s1: [1 100 3 4 5]
4. スライス要素を見つけます

package main
import "fmt"
func main() {
 var s1 = []int{1, 2, 3, 4, 5}
 var key = 2 //查找2所在的位置
 for i, v := range s1 {
  if v == key {
   fmt.Printf("s1: %v\n", s1)
   fmt.Printf("索引为: %v\n", i)
  }
 }
}
//输出结果如下
s1: [1 2 3 4 5]
索引为: 1
##5. スライスをコピーします

##
package main
import "fmt"
func main() {
 var s1 = []int{1, 2, 3, 4, 5}
 var s2 = s1
 s2[0] = 100
 fmt.Printf("s1: %v\n", s1)
 fmt.Printf("s2: %v\n", s2)
}
//输出结果如下
s1: [100 2 3 4 5]
s2: [100 2 3 4 5]
s2 の値が変化すると、s1 の値も変化することがわかります。s2 は s1 のメモリ アドレスをコピーするため、関連付けが変化します。
#copy メソッドによる変更を使用しても、ソース スライスの値には影響しません

  • package main
    import "fmt"
    func main() {
     var s1 = []int{1, 2, 3, 4, 5}
     var s2 = make([]int, 4)  //需要make一个切片的类型,指定有5个元素
     copy(s2, s1) //指定复制的切片
     s2[0] = 100
     fmt.Printf("s1: %v\n", s1)
     fmt.Printf("s2: %v\n", s2)
    }
    //输出结果
    s1: [1 2 3 4 5]
    s2: [100 2 3 4 5]

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。