How to delete an element from a Slice in Golang

前端 未结 14 1562
时光取名叫无心
时光取名叫无心 2021-01-30 03:03
fmt.Println(\"Enter position to delete::\")
fmt.Scanln(&pos)

new_arr := make([]int, (len(arr) - 1))
k := 0
for i := 0; i < (len(arr) - 1); {
    if i != pos {
           


        
14条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-30 03:12

    Find a way here without relocating.

    • changes order
    a := []string{"A", "B", "C", "D", "E"}
    i := 2
    
    // Remove the element at index i from a.
    a[i] = a[len(a)-1] // Copy last element to index i.
    a[len(a)-1] = ""   // Erase last element (write zero value).
    a = a[:len(a)-1]   // Truncate slice.
    
    fmt.Println(a) // [A B E D]
    
    • keep order
    a := []string{"A", "B", "C", "D", "E"}
    i := 2
    
    // Remove the element at index i from a.
    copy(a[i:], a[i+1:]) // Shift a[i+1:] left one index.
    a[len(a)-1] = ""     // Erase last element (write zero value).
    a = a[:len(a)-1]     // Truncate slice.
    
    fmt.Println(a) // [A B D E]
    

提交回复
热议问题