Golang : Delete item from slice based on index/key position
Problem :
You want to delete an element from a slice or array and you know the index(position number) of the element. What is the quick way to delete the element?
Solution :
You can use the append()
function to sort of "skip" the element that you want to remove before copying the rest of the elements to a new slice or array.
For example :
package main
import "fmt"
func main() {
strSlice := []string{"abc", "xyz", "def", "ghi", "jkl"}
fmt.Println("Before delete")
for k, v := range strSlice {
fmt.Printf("key : %v, value : %v \n", k, v)
}
// we want to remove xyz and the index/key number associated
// with it is 1
i := 1
newSlice := append(strSlice[:i], strSlice[i+1:]...)
fmt.Println("After delete")
for k, v := range newSlice {
fmt.Printf("key : %v, value : %v \n", k, v)
}
}
Output :
Before delete
key : 0, value : abc
key : 1, value : xyz
key : 2, value : def
key : 3, value : ghi
key : 4, value : jkl
After delete
key : 0, value : abc
key : 1, value : def
key : 2, value : ghi
key : 3, value : jkl
p/s : This solution is good as long the element is not a pointer. Otherwise, you gonna have memory leak issue.
Reference :
See also : Golang : Delete duplicate items from a slice/array
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+10k Golang : Sort and reverse sort a slice of integers
+7.4k Golang : How to convert strange string to JSON with json.MarshalIndent
+9.5k Golang : Launch Mac OS X Preview (or other OS) application from your program example
+15.7k Golang : How to convert(cast) IP address to string?
+29.2k Golang : Get first few and last few characters from string
+14.7k Golang : How to check if your program is running in a terminal
+6.1k PHP : How to check if an array is empty ?
+8.5k Golang : Ackermann function example
+34k Golang : Call a function after some delay(time.Sleep and Tick)
+6.6k Golang : Totalize or add-up an array or slice example
+11.8k Golang : Find age or leap age from date of birth example
+8.4k Prevent Write failed: Broken pipe problem during ssh session with screen command