Home  >  Article  >  Backend Development  >  How to modify the value of a slice in golang

How to modify the value of a slice in golang

青灯夜游
青灯夜游Original
2023-01-05 18:59:403725browse

Modification method: 1. Use the append() function to add new values, the syntax "append(slice, value list)"; 2. Use the append() function to delete elements, the syntax "append(a[:i]" , a[i N:]...)"; 3. Reassign the value directly according to the index, the syntax is "slice name [index] = new value".

How to modify the value of a slice in golang

The operating environment of this tutorial: Windows 7 system, GO version 1.18, Dell G3 computer.

Add, delete, modify and query slices in Go language

  • A slice is a dynamic array and you can use the append() function to add elements
  • There is no special method to delete slice elements in the go language. We can use the characteristics of the slice itself to delete elements.
  • Since the slice is a reference type, the original content will be modified through assignment. Go provides the copy() function to copy the slice

1. Add elements

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. Delete element

How to modify the value of a slice in 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]

Formula for deleting elements:

To delete the element with index index from slice a, the operation method is as follows

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

3. Modify the slice element

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. Find the slice element

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. Copy the slice

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]
You can see that when the value of s2 changes, the value of s1 also changes. Because s2 copies the memory address of s1, the association will change.

    Use Modifications by the copy method will not affect the value of the source slice
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]

The above is the detailed content of How to modify the value of a slice in golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn